2010-10-29 49 views

回答

101

文檔指出,你可以只用+字符分隔的修飾語:

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

的血淋淋的細節見here,在情況之下提取的相關位的鏈接永遠消失:


XAML

<object property="oneOrMoreModifierKeys"/> 

XAML值

oneOrMoreModifierKeys - 一個或多個修飾鍵,由ModifierKeys枚舉所定義,與一個+字符分隔。


您還可以使用手勢自身,而不是一個鍵/改性劑組合:

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

按照相同的文檔鏈接:

當定義在XAML一鍵綁定,有兩種方法可以指定KeyGesture。

在XAML中建立KeyBinding的第一種方法是定義KeyBinding元素的Gesture屬性,它使語法能夠將鍵和修飾符指定爲單個字符串,例如「CTRL + P」。

第二種方法是定義KeyBinding元素的Key屬性和Modifiers屬性。

設置KeyGesture的兩種方法都是等效的,並修改相同的基礎對象,但如果使用兩者,將會有衝突。在Key,Modifiers和Gesture屬性都已設置的情況下,最後定義的屬性將用於KeyGesture。

+3

完美的答案。希望我可以給1> upvote! – dkantowitz 2012-08-03 00:16:33

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

請參閱MSDN文檔,KeyBinding Class

3

這裏是my code實現多個字符的快捷鍵,如Alt鍵 + P + 在WPF MVVM甲

添加到您的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 + 它運行方法AddOrganization甲()和第二個是一個單字母簡寫:Alt鍵 + 執行該ICommand的CmdAddNewAgreemnt。

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

這是我第一次嘗試組建一些東西,這樣你就可以把它變成適合你的想法。

5

我知道這個問題是XAML,但這裏有一個樣本,如果你想這樣做的代碼(多ModifierKeys可以通過邏輯或指定):

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