我有一个简单的WPF应用程序,我想添加在Win32世界中被称为键盘加速器的东西。看起来KeyBinding是最合适的,但它需要绑定到一个Command对象。我没有使用命令对象,也不想使用。是否有其他方法可以让ctrl-x键序列被敲击时触发事件?
我唯一能想到的理由就是为什么有人会... 不 如果你想使用命令对象,那么在他们的脑海中,命令对象是与视图模型相关联的,而他们希望他们的keybinding只在视图中工作。
事实上,如果你试图声明一个 ICommand
的观点中,竟然很难管理约束。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
在 MyView
,而不是在ViewModel中。