Documentando esta respuesta para otros, ya que hay una forma mucho más simple de hacer esto que rara vez se menciona, y no requiere tocar el XAML en absoluto.
Para vincular un atajo de teclado, en el constructor de Windows simplemente agregue un nuevo enlace de clave a la colección InputBindings. Como comando, pase su clase de comando arbitraria que implementa ICommand. Para el método de ejecución, simplemente implemente la lógica que necesite. En mi ejemplo a continuación, mi clase de WindowCommand toma un delegado que ejecutará siempre que se invoque. Cuando construyo el nuevo WindowCommand para pasar con mi enlace, simplemente indico en mi inicializador, el método que quiero que WindowCommand ejecute.
Puede usar este patrón para crear sus propios atajos rápidos de teclado.
public YourWindow() //inside any WPF Window constructor
{
...
//add this one statement to bind a new keyboard command shortcut
InputBindings.Add(new KeyBinding(//add a new key-binding, and pass in your command object instance which contains the Execute method which WPF will execute
new WindowCommand(this)
{
ExecuteDelegate = TogglePause //REPLACE TogglePause with your method delegate
}, new KeyGesture(Key.P, ModifierKeys.Control)));
...
}
Crea una clase simple de WindowCommand que toma un delegado de ejecución para disparar cualquier método establecido en él.
hmm ... cuando intenté '
No estoy seguro de si me perdí algo en el tutorial. pero mirando el código de demostración de [John Smith en WPF: Entendiendo los comandos enrutados] (http://joshsmithonwpf.wordpress.com/2008/03/18/understanding-routed-commands/) creo que necesito crear una propiedad en una clase luego referencia en el código ... [Snipplr Code Snipplet] (http://snipplr.com/view/39602/cwpf-routed-commands/) –