Я использую 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?