实现键盘快捷键

Jie*_*eng 6 c# wpf

我目前使用onKeyDown事件和if/else语句来创建键盘快捷键:

if ((Keyboard.Modifiers & ModifierKeys.Shift) == ModifierKeys.Shift && e.Key == Key.Tab) {

} else if (e.Key == Key.Tab) {

} ...
Run Code Online (Sandbox Code Playgroud)

但是,如果我有更多的键盘快捷键,这会变得混乱.

有更好的实施吗?

Chr*_*isF 17

你应该看看实现<CommandBindings><InputBindings>:

<Window.CommandBindings>
    <CommandBinding Command="Settings" CanExecute="SettingsCanExecute" Executed="SettingsExecuted" />
</Window.CommandBindings>

<Window.InputBindings>
    <KeyBinding Command="Settings" Key="S" Modifiers="Alt" />
</Window.InputBindings>
Run Code Online (Sandbox Code Playgroud)

<Button>然后你变成:

<Button Height="50" Width="50" Margin="50,5,0,0" Command="Settings" />
Run Code Online (Sandbox Code Playgroud)

SettingsCanExecute方法确定何时启用按钮并且在SettingsExecuted按下按钮或敲击组合键时调用该方法.

然后,您不需要KeyDown处理程序.

有关Switch On The Code 的完整教程.

有关CommandBindingsInputBindings的更多信息可以在MSDN上找到.