使用多个修饰键在WPF中创建KeyBinding

Jie*_*eng 69 wpf

我创建的方式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.

  • 完美答案.希望我能给出> 1 upvote! (3认同)

Aur*_*bon 15

<KeyBinding Command="{Binding SaveCommand}"
            Gesture="Ctrl+Shift+S" />
Run Code Online (Sandbox Code Playgroud)

请参阅MSDN文档,KeyBinding类.


Kor*_*fin 5

我知道问题出在XAML上,但如果您想在代码中执行此操作,可以使用以下示例(可以通过逻辑OR指定多个ModifierKeys):

new KeyBinding( SaveCommand, Key.S, ModifierKeys.Control | ModifierKeys.Shift )
Run Code Online (Sandbox Code Playgroud)