我正在构建一个 POS 应用程序,我希望最终用户能够为数据网格设置切换选择模式,即他们可以单击多行,并且每个单击的项目都将累积在 SelectedItems 属性上——也可以单击一行已选择的将取消选择该行。我在另一个 stackoverflow 问题中找到了这段代码:
<DataGrid.Resources>
<Style TargetType="{x:Type DataGridCell}">
<EventSetter Event="PreviewMouseLeftButtonDown" Handler="DoCheckRow" />
</Style>
</DataGrid.Resources>
public void DoCheckRow(object sender, MouseButtonEventArgs e)
{
DataGridCell cell = sender as DataGridCell;
if (cell != null && !cell.IsEditing)
{
DataGridRow row = VisualHelpers.TryFindParent<DataGridRow>(cell);
if (row != null)
{
row.IsSelected = !row.IsSelected;
e.Handled = true;
Debug.WriteLine(sender);
}
}
}
就切换选择模式而言,这有效地为我提供了我想要的东西,但是,当我将按钮添加为 CellTemplate 时,单击时不会触发按钮命令,因为我e.Handled = true;
在上面的代码中进行了设置以停止事件气泡。有没有办法可以同时兼顾两者?