Estoy usando el RelayCommand en mi aplicación. Es genial para poner el código en el modelo de vista, pero ¿cómo puedo vincular las teclas a mi comando?Teclear un RelayCommand
RoutedUICommand tiene su propiedad InputGestures, que hace que el comando se invoque automáticamente cuando presiono la tecla. (Como una ventaja adicional, incluso hace que la pantalla de teclas se muestre en MenuItem.) Lamentablemente, no hay una interfaz reutilizable para las propiedades adicionales de RoutedUICommand, por lo que no puedo crear un RelayUICommand que obtenga la misma magia.
ya he intentado usar InputBindings:
<Window.InputBindings>
<KeyBinding Key="PageUp" Command="{Binding SelectPreviousLayerCommand}"/>
</Window.InputBindings>
Pero eso me consigue una excepción de tiempo de ejecución, porque KeyBinding.Command no es una propiedad de dependencia. (En realidad, de lo que se queja es de que KeyBinding ni siquiera es DependencyObject). Y dado que mi RelayCommand es una propiedad de mi ViewModel (a diferencia del campo estático para el que está diseñado RoutedUICommand), la única forma que conozco es de enlace de datos. para referenciarlo desde XAML.
¿Cómo han solucionado esto? ¿Cuál es la mejor manera de vincular una pulsación de tecla a un RelayCommand?
La vinculación de la propiedad Command de la clase KeyBinding en .NET 4.0 se describe en un artículo en http://tomlev2.wordpress.com/2009/10/26/vs2010-binding-support-in-inputbindings/ –
El enlace anterior se ha movido a http://www.thomaslevesque.com/2009/10/26/vs2010-binding-support-in-inputbindings/ – avenmore