覆盖回车键,但保持wpf数据网格中其他键的默认行为

Ste*_*son 4 c# wpf datagrid overriding key-bindings

让我感到困扰的是,按下数据网格中的回车键会将选择项向下移动一个项目,我希望能够决定它在正常的keydown事件中做了什么.

所以我所做的是创建一个继承DataGrid并覆盖OnKeyDown事件并将其用作我的datagrid的新类.

这会产生一系列全新的问题,因为我显然必须重写所有其他按键(箭头键导航,shift +箭头键选择,pgup/pgdn等等).我一直在试图破解它,但是花费时间重写一些已经编写好的东西并且可能比我想出的更好.

那么如何在不弄乱datagrid的其他默认键绑定的情况下让enter键执行我想要的操作呢?

提前致谢

Rob*_*ben 9

您需要将PreviewKeyDown处理程序绑定到Datagrid,然后手动检查键值是否为 Key.Enter.

如果是,请设置e.Handled = true.


Ant*_*ois 4

只需检查按下的键是否为 Enter,如果不是,则调用 KeyDown 的基本事件处理程序(类似于base.OnKeyDown(sender, args);