2010-10-29 24 views

Respuesta

101

La documentación que sólo puede separar los modificadores con el carácter +:

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

Ver here para los detalles morbosos, con los bits relevantes extraídos a continuación en caso de que el enlace nunca desaparece:


XAML

<object property="oneOrMoreModifierKeys"/> 

Valores XAML

oneOrMoreModifierKeys - una o más teclas modificadoras, definidos por el ModifierKeys enumeración, delimitadas con un carácter +.


También puede utilizar un gesto en su propio lugar de una combinación de teclas/modificador:

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

según ese mismo enlace de documentación:

Al definir una KeyBinding en XAML , hay dos formas de especificar KeyGesture.

La primera forma de establecer un KeyBinding en XAML es definir el atributo Gesture del elemento KeyBinding, que habilita una sintaxis para especificar claves y modificadores como una sola cadena, por ejemplo "CTRL + P".

La segunda forma es definir el atributo clave y los atributos modificadores del elemento KeyBinding.

Ambas formas de configurar KeyGesture son equivalentes y modifican el mismo objeto subyacente, pero habrá un conflicto si se usan ambas. En el caso en que los atributos Clave, Modificadores y Gesto estén todos configurados, el atributo que se define al final se usará para KeyGesture.

+3

respuesta perfecta. ¡Ojalá pudiera dar> 1 voto explícito! – dkantowitz

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

Consulte la documentación de MSDN, KeyBinding Class.

3

Aquí es my code para implementar múltiples combinaciones de teclas de caracteres, tales como Alt +P +Un en WPF MVVM.

Agregar a su XAML (comportamiento adjunto para el evento KeyDown):

cb:ShortCutBehavior.Command="{Binding Shortcuts.CmdKeyPressed}" 

Agregar a su modelo de vista:

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); 

Estos son dos ejemplos de añadir accesos directos. El primero es un doble acceso directo letra: Alt + P + A que se ejecuta el método AddOrganization() y el segundo es un único acceso directo letra: Alt + A que ejecuta la ICommand CmdAddNewAgreemnt.

Tanto AddDoubleLetterShortCut como AddSingleLetterShortCut están sobrecargados para aceptar Acciones o ICommands.

Este es uno de mis primeros intentos de generar algo, por lo que puede tomar la idea y hacerla adecuada para usted.

5

sé la pregunta se hace para XAML, pero aquí es una muestra si quiere hacerlo en el código (ModifierKeys múltiples pueden especificarse a través lógica OR):

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