Остановить нажатие CTRL-Click на родительскую сетку данных
У меня есть WPF DataGrid, у которого есть другая сетка данных, объявленная в RowDetailsTemplate;
<DataGrid name="dataGrid1" RowDetailsVisibilityMode="VisibleWhenSelected">
...
<DataGrid.RowDetailsTemplate>
<DataTemplate>
<DataGrid name="dataGrid2">
...
</DataGrid/>
</DataTemplate>
</DataGrid.RowDetailsTemplate>
</DataGrid>
Когда я нажимаю CTRL и щелкаю строку в дочерней DataGrid, она отменяет выбор родительской таблицы данных. SelectedItem
и прячет RowDetailsTemplate
,
Я предполагаю, что это какое-то поведение Routed Event, но я пытался поймать MouseDown
/LeftButtonMouseDown
на сетке данных, но событие не запускается. Я также поймал SelectedItemChanged
событие на дочернем сетке данных и установить e.Handled = true;
но событие по-прежнему срабатывает на родителя.
Как я могу остановить отмену выбора родительской сетки данных при нажатии CTRL дочернего DataGridRow?
1 ответ
Ловля PreviewMouseLeftButtonDown
на детском контроле, настройка e.Handled = true
а также dataGridRow.IsSelected = !dataGridRow.IsSelected
исправил это.