4

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

更详细....

我有一个包含 3 个控件的窗口:

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

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

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

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

我可以通过设置CmdA按钮的命令目标来纠正这个问题。现在当我选择文本框时,CmdA仍然启用。

但是键盘快捷键Ctrl+T什么也不做。

有没有简单的方法来改变键盘快捷键的范围?或者我是否需要在较低的某个地方捕捉按键,并计算出它与哪个命令相关并自己路由它(如果是这样,是否有一个框架可以做到这一点?)

4

1 回答 1

2

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

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

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

<Window.CommandBindings>
        <CommandBinding Command="New" Executed="CommandBinding_Executed" />
        ...
</Window.CommandBindings>
于 2011-01-09T21:02:03.390 回答