Вопрос по wpf, mvvm, c# – Привязать сочетание клавиш к команде в модели представления в WPF

7

У меня есть приложение, где у меня естьUserControl с панелью инструментов в нем. Эта панель инструментов имеет кнопкуExecute который в свою очередь имеет свою команду, связанную сICommand производный класс, который viewmodel предоставляет как свойство.

<Button Grid.Row="0" Command="{Binding ExecuteCommand}">Execute</Button>

Теперь я хочу привязать это к сочетанию клавиш (F5) также. Это должно быть связано в контекстеUserControl поскольку он применим только в том случае, если этот пользовательский контроль видим в данный момент.

Другой вариант - привязать его кKeyDown текстового поля, которое фактически содержит текст для выполнения, но я действительно шаток, когда речь идет о том, как направить событие от элемента управления к команде в модели представления без действительно уродливых хаков в коде позади пользовательского элемента управления.

Любые указатели приветствуются!

@DanielHilgarth: я имел в виду WinForms как прилагательное к значениюlow quality или жеnot helpful для WPF / MVVM. user7116
Это в том же духе, но на самом деле это не тот же вопрос. Это говорит о том, как связать стандартные команды, в то время как это связывает пользовательскую команду со свойством в моделях представления. Решение оказалось похожим, но все же разными. Dervall
@sixlettervariables: я не вижу никаких winforms в вопросе или ответе Daniel Hilgarth
@DanielHilgarth: да, я не считаю его дубликатом или, по крайней мере, решение, представленное в другом вопросе, является плохим (это решение WinForms для проблемы MVVM). user7116
возможный дубликатKeyboard shortcuts in WPF Daniel Hilgarth

Ваш Ответ

2   ответа
2

нет способа напрямую связать с нажатием клавиши, но есть некоторые обходные пути. Похоже, у других тоже была эта проблема, вы виделиэта почта? Мое другое предложение, чтобы посмотреть вприкрепленные команды.

25

<UserControl.InputBindings>
  <KeyBinding Key="F5" Command="{Binding ExecuteCommand}" />
</UserControl.InputBindings>

Я хотел бы отдать должное этому парню, если это возможно. Пожалуйста, появитесь снова :)

Похожие вопросы