基本上我想创建一个在窗口范围内有效的键盘快捷键,而不仅仅是在焦点位于绑定它的控件中时启用。
更详细......
我有一个有3个控件的窗口:
工具栏上有一个绑定到命令CustomCommands.CmdA
的按钮,并链接到键盘快捷键 Ctrl + T 。
我的自定义控件可以处理CmdA
。当我运行应用程序并单击我的自定义控件CmdA
时,启用并正常工作。此外, Ctrl + T 会导致命令触发。
但是,当我选择文本框时,我的自定义命令CmdA
将被禁用。
我可以通过设置CmdA
按钮的命令目标来解决这个问题。现在,当我选择textBox时,仍然会启用CmdA
。
但键盘快捷键 Ctrl + T 什么都不做。
有没有简单的方法来改变键盘快捷键的范围?或者我是否需要在较低的位置捕获按键,并确定与其相关的命令并自行路由(如果有的话,可以在其中执行此操作的框架吗?)
答案 0 :(得分:2)
为此,您通常只需要在窗口中指定输入绑定,例如:
<Window.InputBindings>
<KeyBinding Key="N" Modifiers="Control" Command="New"/>
...
</Window.InputBindings>
对于内置应用程序命令(RoutedCommands
),您在窗口中也需要CommandBinding
。
<Window.CommandBindings>
<CommandBinding Command="New" Executed="CommandBinding_Executed" />
...
</Window.CommandBindings>