我有一个简单的 WPF 应用程序,我想添加在 Win32 世界中众所周知的键盘加速器。看起来 KeyBinding 是票,但它需要绑定到 Command 对象。我没有使用命令对象,也不想使用。当按下 ctrl-x 键序列时,是否有另一种方法可以触发事件?
问问题
1429 次
2 回答
1
我能想到为什么任何人都不想使用命令对象的唯一原因是,如果他们在脑海中将它们与视图模型相关联,而他们希望他们的键绑定仅在视图中工作。
事实上,如果您尝试ICommand
在视图中声明 an,那么很难将其绑定KeyBinding
到它。
这就是我在项目中解决这个问题的方法:
<Window x:Class="MyNamespace.MyView"
(...)
xmlns:local="clr-namespace:MyNameSpace"
(...)
<Grid>
<Grid.InputBindings>
<KeyBinding Key="R" Command="{Binding ReportCommand,
RelativeSource={RelativeSource AncestorType=local:MyView}}" />
(...)
ReportCommand
是ICommand
in MyView
,不在 ViewModel 中。
于 2020-06-11T09:45:40.333 回答
0
那么你应该研究钩子。
http://www.codeproject.com/KB/cs/globalhook.aspx
在 WPF / C# 中使用全局键盘挂钩 (WH_KEYBOARD_LL)
高温高压
于 2010-09-10T17:40:44.817 回答