Связывание ключей RelayCommand

Я используюRelayCommand в моем приложении. Это отлично подходит для помещения кода в модель представления, но как привязать нажатия клавиш к моей команде?

RoutedUICommand имеет свойство InputGestures, которое позволяет автоматически вызывать команду при нажатии клавиши. (В качестве дополнительного бонуса он даже отображает нажатие клавиш в MenuItem.) К сожалению, нет никакого интерфейса многократного использования для дополнительных свойств RoutedUICommand, поэтому я не могу создать RelayUICommand, которая получает ту же магию.

Я уже пытался использовать InputBindings:

<code><Window.InputBindings>
    <KeyBinding Key="PageUp" Command="{Binding SelectPreviousLayerCommand}"/>
</Window.InputBindings>
</code>

Но это вызывает у меня исключение во время выполнения, потому что KeyBinding.Command не является свойством зависимости. (На самом деле, он жалуется на то, что KeyBinding не является даже DependencyObject.) И поскольку моя RelayCommand является свойством в моей ViewModel (в отличие от статического поля, для которого предназначена RoutedUICommand), привязка данных - единственный способ, который я знаю о сослаться на это из XAML.

Как вы, ребята, решили это? Какой лучший способ связать нажатие клавиши с RelayCommand?

Ответы на вопрос(6)

Ваш ответ на вопрос