Остановить нажатие 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 исправил это.

Другие вопросы по тегам