在WPF中使用多个修饰键创buildKeyBinding

我创buildKeyBinding的方式是这样的:

 <KeyBinding Modifiers="Ctrl" Key="S" Command="{Binding SaveCommand}" /> 

但是如果我需要两个修饰键呢? 例如, Ctrl + Shift

该文档指出,您可以将修饰符与+字符分开:

 <KeyBinding Modifiers="Ctrl+Shift" Key="S" Command="{Binding SaveCommand}" /> 

看到这里的血淋淋的细节,以下提取的相关位,以防万一链接消失:


XAML

 <object property="oneOrMoreModifierKeys"/> 

XAML值

oneOrMoreModifierKeys – 一个或多个修饰键,由ModifierKeys枚举定义,用+字符分隔。


您也可以使用自己的手势而不是键/修饰符组合:

 <KeyBinding Gesture="Ctrl+Shift+S" Command="{Binding SaveCommand}" /> 

按照相同的文件链接:

在XAML中定义KeyBinding时,有两种方法可以指定KeyGesture。

在XAML中build立一个KeyBinding的第一种方法是定义KeyBinding元素的Gesture属性,它使得一个语法可以将键和修饰符指定为单个string,例如“CTRL + P”。

第二种方法是定义KeyBinding元素的Key属性和Modifiers属性。

设置KeyGesture的两种方法都是等效的,并修改相同的基础对象,但如果使用两者,则会有冲突。 在Key,Modifiers和Gesture属性全部设置的情况下,最后定义的属性将用于KeyGesture。

 <KeyBinding Command="{Binding SaveCommand}" Gesture="Ctrl+Shift+S" /> 

请参阅MSDN文档, KeyBinding类

我知道这个问题是针对XAML的,但是如果你想在代码中使用这个示例(多个ModifierKeys可以通过逻辑OR来指定),那么这里是一个示例:

 new KeyBinding( SaveCommand, Key.S, ModifierKeys.Control | ModifierKeys.Shift ) 

这里是我的代码来实现多个字符快捷键,如WPF MVVM中的Alt + P + A。

将其添加到您的XAML (KeyDown事件的附加行为):

 cb:ShortCutBehavior.Command="{Binding Shortcuts.CmdKeyPressed}" 

添加到您的视图模型:

 ShortCuts Shortcuts = new ShortCuts( this ); //Add Plenty of shortcuts here until your heart is desired Shortcuts.AddDoubleLetterShortCut( AddOrganization, Key.P, Key.A, ModifierKeys.Alt, true); Shortcuts.AddSingleLetterShortCut( CmdAddNewAgreement, Key.A, ModifierKeys.Alt); 

这是添加快捷方式的两个示例。 第一个是双字母快捷方式: Alt + P + A运行方法AddOrganization(),第二个是单字母快捷方式: Alt + A执行ICommand CmdAddNewAgreemnt。

AddDoubleLetterShortCut和AddSingleLetterShortCut都被重载以接受Actions或ICommands。

这是我第一次试图组build东西的尝试之​​一,所以你可以把这个想法做出来,让它适合你。