在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东西的尝试之一,所以你可以把这个想法做出来,让它适合你。