我有一个 WPF DataGrid,它在 RowDetailsTemplate 中声明了另一个数据网格;
<DataGrid name="dataGrid1" RowDetailsVisibilityMode="VisibleWhenSelected">
...
<DataGrid.RowDetailsTemplate>
<DataTemplate>
<DataGrid name="dataGrid2">
...
</DataGrid/>
</DataTemplate>
</DataGrid.RowDetailsTemplate>
</DataGrid>
当我按住 CTRL 并单击子 DataGrid 上的一行时,它会取消选择父数据网格的 SelectedItem
并隐藏 RowDetailsTemplate
。
我假设这是某种路由事件行为,但我试图在数据网格上捕获 MouseDown
/LeftButtonMouseDown
但没有触发任何事件。我还在子数据网格上捕获了 SelectedItemChanged
事件并设置了 e.Handled = true;
但该事件仍会在父级上触发。
当 CTRL 单击子 DataGridRow 时,如何阻止父数据网格取消选择?
最佳答案
在子控件处捕获 PreviewMouseLeftButtonDown
,设置 e.Handled = true
和 dataGridRow.IsSelected = !dataGridRow.IsSelected
解决了这个问题。
关于c# - 停止 CTRL-Click 影响父数据网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9388655/