我有一个WPF应用程序,我正在尝试将自定义键手势与命令相关联。我试过这些:
<KeyBinding Gesture="HOME" Command="customCommand"/>
<KeyBinding Gesture="Ctrl + HOME" Command="customCommand"/>
<KeyBinding Gesture="ctrl + Alt + HOME" Command="customCommand"/>
它们都不起作用。但我接着尝试了
<KeyBinding Gesture="Ctrl + H" Command="customCommand"/>
它按预期工作。
我想知道Ctrl+H
和Ctrl+Home
之间有什么区别? WPF内部是否阻止HOME / End键触发命令?
更新: 我想我发现为什么它不起作用。基本上我们在最顶层的水平上定义了一个键绑定。结构是这样的: 帧 标签控件 用户控制
在用户控件内,用户按下HOME按钮试图触发顶级命令。但似乎截图控制截获并处理了命令。在这种情况下,HOME按钮实际上是专注于第一个标签项。 有没有办法绕过选项卡控件,以便顶级框架可以直接处理它?</ p>
答案 0 :(得分:0)
TabControl
处理OnKeyDown
方法中的Home键,然后将焦点移至第一个标签项。
规避此行为的唯一方法是创建自己的TabControl
派生控件并覆盖OnKeyDown
方法。例如:
public void MyTabControl : TabControl
{
protected override void OnKeyDown(KeyEventArgs e)
{
if(e.Key != Key.Home)
{
base.OnKeyDown(e);
}
}
}
然后,这将停止对Home键的默认TabControl
处理。