Я использую в своем приложении 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?