我需要删除(或至少更改)与wpf标准命令相关的默认手势。
我有一个Datagrid(来自infragistics的XamDataGrid),我已将其与我创建的自定义命令相关联。该命令使用“ctrl-delete”手势 只要我不编辑单元格的值,这就有效。
当我编辑Cell时,使用TextEditor。当我使用“ctrl-delete”手势而不是执行我的命令时,执行DeleteNextWord命令 这是正常的,TextEditor具有焦点,并且由于没有附加绑定或输入,因此使用了类。
这就是我的问题所在。我不能(没有过度杀戮)向TextEditor的实例添加绑定或输入手势。
所以我尝试使用的方法是删除或修改DeleteNextWord命令的“默认”键手势。
在查看.Net Reflector以了解命令的注册方式之后,我看到框架从资源获取与命令关联的密钥。
在我的例子中,手势“ctrl-delete”来自资源“ExceptionStringTable”中的键“KeyDeleteNextWord”(内部类型SR,静态构造函数)。
我可以在资源“ExceptionStringTable”中覆盖“KeyDeleteNextWord”的值吗?
或者,以更一般的方式:
如何全局修改标准WPF命令的默认手势?
如果需要,我很乐意提供更多信息。
谢谢。
答案 0 :(得分:0)
我没有XamDataGrid,但我尝试使用常规TextBox。
tb.PreviewKeyDown += new KeyEventHandler(tb_KeyDown);
void tb_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.X && Keyboard.Modifiers == ModifierKeys.Control)
{
Trace.WriteLine("Ctrl+X");
e.Handled = true;
}
}
该代码将绕过默认的“剪切”命令。
在您的项目中,您可能需要修改控件模板,然后使用TextEditor上的附加属性或行为来拦截击键并发送您自己的命令。