我正在使用在我的应用程序中使用RelayCommand。它非常适合将代码放在ViewModel中,但如何将按键绑定到命令呢?
RoutedUICommand有其InputGestures属性,使得按下按键时自动调用该命令。(作为额外的奖励,它甚至可以使菜单项中的按键显示。)不幸的是,没有可重用的接口来获取RoutedUICommand的额外属性,因此我无法创建一个获得相同魔力的RelayUICommand。
我已经尝试使用InputBindings:
<Window.InputBindings>
<KeyBinding Key="PageUp" Command="{Binding SelectPreviousLayerCommand}"/>
</Window.InputBindings>
但这会导致运行时异常,因为KeyBinding.Command不是一个依赖属性。(实际上,它抱怨的是KeyBinding甚至不是DependencyObject。)而且,由于我的RelayCommand是ViewModel上的属性(与RoutedUICommand设计用于的静态字段相反),数据绑定是我知道的唯一引用它的XAML方式。
你们是如何解决这个问题的?绑定按键到RelayCommand的最佳方法是什么?