В приложении WPF MVVM мне нужно запускать команду при нажатии CTRL + '(управление и апостроф). Ничто из следующего не скомпилируется ...

<KeyBinding Modifiers="CTRL" Key="'" Command="{Binding MyCommand}"/>
<KeyBinding Modifiers="CTRL" Key="\'" Command="{Binding MyCommand}"/>
<KeyBinding Modifiers="CTRL" Key="&apos;" Command="{Binding MyCommand}"/>
<KeyBinding Gesture="CTRL+'" Command="{Binding MyCommand}"/>
<KeyBinding Gesture="CTRL+&apos;" Command="{Binding MyCommand}"/>
<KeyBinding Gesture="CTRL+\'" Command="{Binding MyCommand}"/>

Так как же достичь этой комбинации клавиш?

1
ifinlay 17 Дек 2019 в 22:00

2 ответа

Лучший ответ

Апостроф не является ключом. Это символ, который в конечном итоге сопоставляется клавише в зависимости от устройства ввода. OemQuestion работает на моей клавиатуре:

<KeyBinding Modifiers="CTRL" Key="OemQuestion"  Command="{Binding MyCommand}"/>

... но вам лучше обработать событие PreviewTextInput, если вы действительно хотите определить, когда введен апостроф:

Как определить, когда (OEM) клавиша косой черты нажата в клавишах OEM C #

1
mm8 18 Дек 2019 в 10:39

Код ключа для апострофа - OemQuotes. Этот синтаксис должен сделать свое дело

   <KeyBinding Command="{Binding Command}"
          Modifiers="CTRL" Key="OemQuotes" />
0
zaphod-ii 17 Дек 2019 в 19:16