Finalmente descubrí cómo hacer esto con Comandos en XAML. Desafortunadamente, si desea utilizar un nombre de comando personalizado (no uno de los comandos predefinidos como ApplicationCommands.Open) es necesario definirlo en el código subyacente, algo como esto:
namespace MyNamespace {
public static class CustomCommands
{
public static RoutedCommand MyCommand =
new RoutedCommand("MyCommand", typeof(CustomCommands));
}
}
El XAML es algo como esto. ..
<Window x:Class="MyNamespace.DemoWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:MyNamespace"
Title="..." Height="299" Width="454">
<Window.InputBindings>
<KeyBinding Gesture="Control+O" Command="local:CustomCommands.MyCommand"/>
</Window.InputBindings>
<Window.CommandBindings>
<CommandBinding Command="local:CustomCommands.MyCommand" Executed="MyCommand_Executed"/>
</Window.CommandBindings>
</Window>
Y por supuesto que necesita un controlador:
private void MyCommand_Executed(object sender, ExecutedRoutedEventArgs e)
{
// Handle the command. Optionally set e.Handled
}
¿hay otras maneras de registrar las teclas de acceso directo, por ejemplo, en XAML? – Qwertie
Verifique este hilo. http://stackoverflow.com/questions/612966/keyboard-events-in-a-wpf-mvvm-application –