По умолчанию WPF DataGrid
выбирает, когда строка будет нажата, если SelectionMode = "Extended"
, что я хочу, однако я также хочу, чтобы строка не выделялась, если она уже была выбрана ранее при нажатии.
Я пробовал следующее, которое отменит выбор строки, как только она будет выбрана, кажется, что выбор строки происходит до события щелчка мыши.
private void DoGridMouseLeftButtonUp(object sender, MouseButtonEventArgs args) {
// Get source row.
DependencyObject source = (DependencyObject)args.OriginalSource;
var row = source.FindParent<DataGridRow>();
if (row == null)
return;
// If selected, unselect.
if (row.IsSelected) {
row.IsSelected = false;
args.Handled = true;
}
}
Где я привязываю к этому событию следующую сетку.
<DataGrid SelectionMode="Extended"
SelectionUnit="FullRow"
MouseLeftButtonUp="DoGridMouseLeftButtonUp">