WPF键绑定手势,HOME / END无法正常工作

时间:2013-11-19 17:25:17

标签: c# wpf keyboard-shortcuts

我有一个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+HCtrl+Home之间有什么区别? WPF内部是否阻止HOME / End键触发命令?

更新: 我想我发现为什么它不起作用。基本上我们在最顶层的水平上定义了一个键绑定。结构是这样的: 帧    标签控件      用户控制

在用户控件内,用户按下HOME按钮试图触发顶级命令。但似乎截图控制截获并处理了命令。在这种情况下,HOME按钮实际上是专注于第一个标签项。 有没有办法绕过选项卡控件,以便顶级框架可以直接处理它?<​​/ p>

1 个答案:

答案 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处理。