2012-04-18 24 views
6

Tengo una aplicación donde tengo un UserControl con una barra de herramientas en ella. Esta barra de herramientas tiene un botón Execute que a su vez tiene su comando vinculado a una clase derivada de ICommand que el modelo de vista expone como una propiedad.Enlazar un atajo de teclado a un comando en el modelo de vista en WPF

<Button Grid.Row="0" Command="{Binding ExecuteCommand}">Execute</Button> 

Ahora, me gustaría unirse a un atajo de teclado (F5) también. Esto debe estar vinculado en el contexto del UserControl ya que solo es aplicable si este control de usuario está visible en este momento.

Otra opción es vincularlo al KeyDown del cuadro de texto que contiene realmente el texto para ejecutar, pero estoy muy débil cuando se trata de cómo enrutar el evento desde el control al comando en el modelo de vista sin realmente feos hacks en el código subyacente del usercontrol.

¡Todos los indicadores son apreciados!

+0

posible duplicado de [Atajos de teclado en WPF] (http://stackoverflow.com/questions/1361350/keyboard-shortcuts-in-wpf) –

+1

Está en la misma línea, pero no es realmente el la misma pregunta. Habla de cómo vincular comandos estándar, mientras que esto vincula un comando personalizado a una propiedad en los modelos de vista. La solución resultó ser similar pero aún así, cosas diferentes. – Dervall

+0

@DanielHilgarth: sí, no creo que sea un duplicado, o al menos la solución proporcionada en la otra pregunta es pobre (es la solución de WinForms a un problema de MVVM). – user7116

Respuesta

24

Hubo otra respuesta que desapareció por alguna razón. Esto funcionó bien:

<UserControl.InputBindings> 
    <KeyBinding Key="F5" Command="{Binding ExecuteCommand}" /> 
</UserControl.InputBindings> 

Me gustaría dar crédito a ese tipo si es posible. Por favor, vuelva a aparecer :)

2

Afaik, no hay una forma de enlazar directamente a una pulsación de tecla, pero hay algunas soluciones alternativas. Parece que otros también han tenido este problema, ¿has visto this post? Mi otra sugerencia es buscar en attached commands.

Cuestiones relacionadas