c# - 停止 CTRL-Click 影响父数据网格

标签 c# wpf xaml wpfdatagrid

我有一个 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 = truedataGridRow.IsSelected = !dataGridRow.IsSelected 解决了这个问题。

关于c# - 停止 CTRL-Click 影响父数据网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9388655/

相关文章:

c# - 没有空格的多个网络链接的正则表达式?

wpf - 为什么在 OneWay 模式下数据绑定(bind)会中断?

c# - 验证时出现键空错误

wpf - 如何覆盖全局样式(没有 x :Key), 或将命名样式应用于所有类型目标控件?

.net - 如何在运行时动态更改 MultiBinding(或任何其他)资源的 ConverterParameter(或任何)属性?

c# - 从另一个 xaml 更改 xaml 按钮的属性

c# - 用于检测 ISO 语言代码的正则表达式

c# - WCF 并发?

c# - 在 Windows 10 UWP 中更改强调色

wpf - ClickOnce 部署后按钮图标丢失