Создание привязки клавиш в WPF с несколькими ключами-модификаторами



так, как я создал KeyBinding было что-то вроде:



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


но что, если мне нужны два ключа-модификатора? Например, Ctrl + Shift.

623   4  
wpf

4 ответов:

в документации указано, что вы можете просто отделить модификаторы с помощью + символ:

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

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


XAML

<object property="oneOrMoreModifierKeys"/>

значения XAML

oneOrMoreModifierKeys - одна или несколько клавиш-модификаторов, определяемых ModifierKeys перечисление, разделенное символом + характер.


вы также можете использовать жест сам по себе, а не комбинацию клавиш / модификаторов:

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

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

при определении привязки ключей в XAML существует два способа указать KeyGesture.

первый способ установить привязку ключей в XAML-это определить атрибут жеста элемента привязки ключей, который позволяет синтаксису указывать ключи и модификаторы в виде одной строки, для пример "CTRL+P".

второй способ заключается в определении ключевого атрибута и атрибутов модификаторов элемента KeyBinding.

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

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

смотрите документацию MSDN, Класс Привязки Клавиш.

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

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

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

оба Addoublelettershortcut и AddSingleLetterShortCut перегружены для принятия действий или ICommands.

Comments

    Ничего не найдено.