我創建的方式KeyBinding
是這樣的:創建鍵綁定在WPF與不止一個修改鍵
<KeyBinding Modifiers="Ctrl" Key="S" Command="{Binding SaveCommand}" />
但是,如果我需要兩個修飾鍵是什麼?例如,Ctrl + Shift。
我創建的方式KeyBinding
是這樣的:創建鍵綁定在WPF與不止一個修改鍵
<KeyBinding Modifiers="Ctrl" Key="S" Command="{Binding SaveCommand}" />
但是,如果我需要兩個修飾鍵是什麼?例如,Ctrl + Shift。
文檔指出,你可以只用+
字符分隔的修飾語:
<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。
<KeyBinding Command="{Binding SaveCommand}"
Gesture="Ctrl+Shift+S" />
請參閱MSDN文檔,KeyBinding Class。
這裏是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。
這是我第一次嘗試組建一些東西,這樣你就可以把它變成適合你的想法。
我知道這個問題是XAML,但這裏有一個樣本,如果你想這樣做的代碼(多ModifierKeys可以通過邏輯或指定):
new KeyBinding(SaveCommand, Key.S, ModifierKeys.Control | ModifierKeys.Shift)
完美的答案。希望我可以給1> upvote! – dkantowitz 2012-08-03 00:16:33