В настоящее время я использую onKeyDown
событие и оператор if / else
для создания сочетаний клавиш:
if ((Keyboard.Modifiers & ModifierKeys.Shift) == ModifierKeys.Shift && e.Key == Key.Tab) {
} else if (e.Key == Key.Tab) {
} ...
Однако, если у меня есть еще несколько сочетаний клавиш, это становится беспорядочным.
Есть ли лучшая реализация?
Вам следует обратить внимание на реализацию
и
:
<Window.CommandBindings>
<CommandBinding Command="Settings" CanExecute="SettingsCanExecute" Executed="SettingsExecuted" />
</Window.CommandBindings>
<Window.InputBindings>
<KeyBinding Command="Settings" Key="S" Modifiers="Alt" />
</Window.InputBindings>
Ваш затем принимает вид:
<Button Height="50" Width="50" Margin="50,5,0,0" Command="Settings" />
Метод SettingsCanExecute
определяет, когда кнопка включена, а метод SettingsExecute
вызывается при нажатии кнопки или комбинации клавиш.
Тогда вам не нужен обработчик KeyDown
.
По включению кода есть полное руководство.
Дополнительную информацию о CommandBindings и InputBindings можно найти в MSDN.