2010-10-29 7 views

risposta

101

Gli stati di documentazione che si può solo separare i modificatori con il carattere +:

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

Vedi here per i dettagli cruenti, con i bit rilevanti estratti di seguito nel caso in cui il legame mai scompare:


XAML

<object property="oneOrMoreModifierKeys"/> 

Valori XAML

oneOrMoreModifierKeys - uno o più tasti modificatori, definiti dal ModifierKeys censimento, delimitate con un carattere +.


È inoltre possibile utilizzare un gesto di per sé, piuttosto che una combinazione di tasti/modificatore:

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

come da quello stesso link documentazione:

Quando si definisce una combinazione di tasti in XAML , esistono due modi per specificare KeyGesture.

Il primo modo per stabilire un KeyBinding in XAML consiste nel definire l'attributo Gesture dell'elemento KeyBinding, che consente a una sintassi di specificare chiavi e modificatori come una singola stringa, ad esempio "CTRL + P".

Il secondo modo è definire l'attributo Chiave e gli attributi Modificatori dell'elemento KeyBinding.

Entrambe le modalità di impostazione di KeyGesture sono equivalenti e modificano lo stesso oggetto sottostante, ma si verificherà un conflitto se entrambi vengono utilizzati. Nel caso in cui tutti gli attributi Key, Modifier e Gesture siano tutti impostati, l'attributo che è stato definito per ultimo verrà utilizzato per KeyGesture.

+3

risposta perfetta. Vorrei poter dare> 1 voto positivo! – dkantowitz

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

Vedere la documentazione MSDN, KeyBinding Class.

3

Ecco my code implementare più combinazioni di tasti carattere, come Alt + P +Un in WPF MVVM.

Aggiungi questo al vostro XAML (comportamento allegato per l'evento KeyDown):

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

Aggiungi questo al vostro modello di 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); 

Questi sono due esempi di aggiunta di collegamenti. Il primo è un doppio collegamento lettera: Alt + P +A che esegue il metodo AddOrganization() e il secondo è un singolo collegamento lettera: Alt + A che esegue ICommand CmdAddNewAgreemnt.

Sia AddDoubleLetterShortCut che AddSingleLetterShortCut sono sovraccaricati per accettare azioni o ICommand.

Questo è uno dei miei primi tentativi di generare qualcosa, quindi puoi prendere l'idea e renderla adatta a te.

5

so la domanda è per XAML, ma qui è un esempio, se si desidera farlo in codice (più ModifierKeys possono essere specificati tramite logica OR):

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