wpf – 键盘快捷键的命令路由

基本上我想创建一个在窗口范围内有效的键盘快捷键,而不仅仅是当焦点位于绑定它的控件内时才启用.

更详细……

我有一个窗口,有3个控件:

>一个工具栏
>一个文本框
>自定义控件

工具栏有一个绑定到Command CustomCommands.CmdA的按钮,并链接到键盘快捷键Ctrl T.

我的自定义控件可以处理CmdA.当我运行应用程序并单击我的自定义控件CmdA已启用并正常工作.此外,Ctrl T会导致命令触发.

但是,当我选择文本框时,我的自定义命令CmdA将被禁用.

我可以通过设置CmdA按钮的命令目标来解决这个问题.现在,当我选择textBox时,仍然启用CmdA.

但键盘快捷键Ctrl T什么都不做.

有没有简单的方法来改变键盘快捷键的范围?或者我是否需要在较低的位置捕获按键,并确定与其相关的命令并自行路由(如果有的话,是否有框架可以执行此操作?)

最佳答案 为此,您通常只需要在窗口中指定输入绑定,例如:

 <Window.InputBindings>
        <KeyBinding Key="N" Modifiers="Control" Command="New"/>
        ...
 </Window.InputBindings>

对于内置应用程序命令(RoutedCommands),您也需要在窗口中使用CommandBinding.

<Window.CommandBindings>
        <CommandBinding Command="New" Executed="CommandBinding_Executed" />
        ...
</Window.CommandBindings>
点赞