我在我的应用程序中使用RelayCommand。将代码放在视图模型中非常棒,但是如何将击键绑定到我的命令?
RoutedUICommand 有它的 InputGestures 属性,当我按下按键时,它会自动调用该命令。(作为一个额外的好处,它甚至可以在 MenuItem 中显示击键。)不幸的是,RoutedUICommand 的额外属性没有可重用的接口,因此我无法制作具有相同魔力的 RelayUICommand。
我已经尝试过使用 InputBindings:
<Window.InputBindings>
<KeyBinding Key="PageUp" Command="{Binding SelectPreviousLayerCommand}"/>
</Window.InputBindings>
但这给了我一个运行时异常,因为 KeyBinding.Command 不是依赖属性。(实际上,它抱怨的是 KeyBinding 甚至不是 DependencyObject。)由于我的 RelayCommand 是我的 ViewModel 上的一个属性(与 RoutedUICommand 设计的静态字段相反),数据绑定是我知道的唯一方法从 XAML 中引用它。
你们是怎么解决这个问题的?将击键绑定到 RelayCommand 的最佳方法是什么?