我有一个WPF DataGrid,它在RowDetailsTemplate中声明了另一个datagrid;
<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时,如何阻止父数据网格取消选择?
答案 0 :(得分:2)
在子控件上抓取PreviewMouseLeftButtonDown
,设置e.Handled = true
和dataGridRow.IsSelected = !dataGridRow.IsSelected
修正此问题。