我创建的方式KeyBinding
是这样的:
<KeyBinding Modifiers="Ctrl" Key="S" Command="{Binding SaveCommand}" />
Run Code Online (Sandbox Code Playgroud)
但是,如果我需要两个修改键呢?例如,Ctrl+ Shift.
pax*_*blo 124
文档说明您可以将修饰符与+
字符分开:
<KeyBinding Modifiers="Ctrl+Shift" Key="S" Command="{Binding SaveCommand}" />
Run Code Online (Sandbox Code Playgroud)
请参阅此处了解血淋淋的细节,如果链接消失,请在下面提取相关位:
XAML
<object property="oneOrMoreModifierKeys"/>
Run Code Online (Sandbox Code Playgroud)
XAML值
oneOrMoreModifierKeys
- 由ModifierKeys
枚举定义的一个或多个修饰键,用+
字符分隔.
您也可以单独使用手势而不是键/修饰符组合:
<KeyBinding Gesture="Ctrl+Shift+S" Command="{Binding SaveCommand}" />
Run Code Online (Sandbox Code Playgroud)
根据相同的文档链接:
在XAML中定义KeyBinding时,有两种方法可以指定KeyGesture.
在XAML中建立KeyBinding的第一种方法是定义KeyBinding元素的Gesture属性,该属性允许语法将键和修饰符指定为单个字符串,例如"CTRL + P".
第二种方法是定义KeyBinding元素的Key属性和Modifiers属性.
设置KeyGesture的两种方式都是等效的,并且修改相同的底层对象,但如果两者都使用则会发生冲突.在设置Key,Modifiers和Gesture属性的情况下,最后定义的属性将用于KeyGesture.
Aur*_*bon 15
<KeyBinding Command="{Binding SaveCommand}"
Gesture="Ctrl+Shift+S" />
Run Code Online (Sandbox Code Playgroud)
请参阅MSDN文档,KeyBinding类.
我知道问题出在XAML上,但如果您想在代码中执行此操作,可以使用以下示例(可以通过逻辑OR指定多个ModifierKeys):
new KeyBinding( SaveCommand, Key.S, ModifierKeys.Control | ModifierKeys.Shift )
Run Code Online (Sandbox Code Playgroud)