Wpf 键盘快捷键的命令路由
基本上,我想创建一个在窗口范围内有效的键盘快捷键,而不仅仅是在焦点位于绑定它的控件内时启用 更详细地说 我有一个有3个控件的窗口:Wpf 键盘快捷键的命令路由,wpf,keyboard-shortcuts,routed-commands,icommand,Wpf,Keyboard Shortcuts,Routed Commands,Icommand,基本上,我想创建一个在窗口范围内有效的键盘快捷键,而不仅仅是在焦点位于绑定它的控件内时启用 更详细地说 我有一个有3个控件的窗口: 工具栏 文本框 自定义控件 工具栏上有一个按钮绑定到命令CustomCommands.CmdA,并链接到键盘快捷键Ctrl+T 我的自定义控件可以处理CmdA。当我运行应用程序并单击我的自定义控件时,CmdA已启用并正常工作。同时,Ctrl+T会触发命令 但是,当我选择文本框时,我的自定义命令CmdA将被禁用 我可以通过设置CmdA按钮的命令目标来纠正这一问题。
- 工具栏
- 文本框
- 自定义控件
CustomCommands.CmdA
,并链接到键盘快捷键Ctrl+T
我的自定义控件可以处理CmdA
。当我运行应用程序并单击我的自定义控件时,CmdA
已启用并正常工作。同时,Ctrl+T会触发命令
但是,当我选择文本框时,我的自定义命令CmdA
将被禁用
我可以通过设置CmdA
按钮的命令目标来纠正这一问题。现在,当我选择文本框时,CmdA
仍处于启用状态
但键盘快捷键Ctrl+T不起任何作用
有什么简单的方法可以改变键盘快捷键的范围吗?或者我是否需要在较低的位置捕捉按键,并找出它与哪个命令相关,然后自己发送它(如果有,是否有一个框架在其中执行此操作?为此,您通常只需要在窗口中指定输入绑定,例如:
<Window.InputBindings>
<KeyBinding Key="N" Modifiers="Control" Command="New"/>
...
</Window.InputBindings>
感谢H.B,但这会将“new”命令绑定到窗口代码中实现的“CommandBinding_Executed”函数。但是,用户控件需要处理它。这是一个更大的问题,因为用户控件是动态创建的,我不知道它将能够处理大约100个自定义命令中的哪一个。
<Window.CommandBindings>
<CommandBinding Command="New" Executed="CommandBinding_Executed" />
...
</Window.CommandBindings>