Usare delle combinazioni di tasti oppure il mouse come shortcut per alcune funzionalità tipo Apri, Stampa, Salva etc è un requisito abbastanza comune, peccato che gestire questo aspetto utilizzando il pattern Model-View-ViewModel non sia proprio banale a causa di una piccola limitazione: la proprietà Command dell’oggetto KeyBinding non è una dependency property.
Il workaround ovviamente esiste, è però un peccato che si debba reinventare la ruota per realizzare banalità del genere.
Con WPF4 finalmente la proprietà Command di MouseBinding e KeyBinding diventano delle dependency properties questo significa che è possibile mappare delle gestures verso dei comandi in questo modo:
1: <Window.InputBindings>
2: <KeyBinding Command="{Binding ExitCommand}"
3: Key="{Binding ExitCommand.GestureKey}"
4: Modifiers="{Binding ExitCommand.GestureModifier}" />
5: <MouseBinding Command="{Binding ExitCommand}"
6: MouseAction="{Binding ExitCommand.MouseGesture}" />
7: </Window.InputBindings>
Notate inoltre come Key,Modifiers e MouseAction siano anch’esse delle dependency properties percui è possibile definirle direttamente all’interno del Command esposto dal ViewModel