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">
DataGrid
行为不太标准。通常情况下,控件需要按CTRL+CLICK
来进行添加和移除,但DataGrid
只需要按CTRL
就可以进行移除。我们的目标受众是普通用户,他们会发现直接单击行以选择/取消选择要简单得多。 - Brett Ryan