从影响父数据网格停止CTRL-单击

时间:2012-02-22 03:21:46

标签: c# wpf xaml wpfdatagrid

我有一个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时,如何阻止父数据网格取消选择?

1 个答案:

答案 0 :(得分:2)

在子控件上抓取PreviewMouseLeftButtonDown,设置e.Handled = truedataGridRow.IsSelected = !dataGridRow.IsSelected修正此问题。