2010-10-29 2 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}" /> 

как в той же ссылке документации:

При определении KeyBinding в XAML , есть два способа указать KeyGesture.

Первым способом установки KeyBinding в XAML является определение атрибута Gesture элемента KeyBinding, который позволяет синтаксису указывать ключи и модификаторы как одну строку, например «CTRL + P».

Второй способ - определить атрибут Key и атрибуты Modifiers элемента KeyBinding.

Оба способа настройки KeyGesture эквивалентны и изменяют один и тот же базовый объект, но будет конфликт, если оба используются. В случае, когда все атрибуты Key, Modifiers и Gesture установлены, атрибут, который определен последним, будет использоваться для KeyGesture.

+3

идеального ответа. Жаль, что я мог бы дать> 1 upvote! – dkantowitz

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 + Р + A, который запускает метод AddOrganization(), а второй является одна буква клавиш: Alt + , который выполняет ICommand CmdAddNewAgreemnt.

И AddDoubleLetterShortCut, и AddSingleLetterShortCut перегружены для принятия действий или ICommands.

Это одна из моих первых попыток обобщить что-то, чтобы вы могли принять эту идею и сделать ее подходящей для вас.

5

Я знаю, что вопрос для XAML, но вот пример, если вы хотите сделать это в коде (несколько ModifierKeys могут быть определены с помощью логического ИЛИ):

new KeyBinding(SaveCommand, Key.S, ModifierKeys.Control | ModifierKeys.Shift) 
Смежные вопросы