wpf 菜单项的键盘快捷键

Keyboard shortcut for wpf menu item

我正在尝试使用

向我的 xaml 代码中的菜单项添加键盘快捷键
<MenuItem x:Name="Options" Header="_Options" InputGestureText="Ctrl+O" Click="Options_Click"/>

Ctrl+O

但它不起作用 - 它没有调用“点击”选项。

有解决办法吗?

你应该以这种方式成功: Defining MenuItem Shortcuts 通过使用 KeyBindings:

<Window.CommandBindings> <CommandBinding Command="New" Executed="CommandBinding_Executed" /> </Window.CommandBindings> <Window.InputBindings> <KeyBinding Key="N" Modifiers="Control" Command="New"/> </Window.InputBindings>

InputGestureText 只是一个文本。它不会将密钥绑定到 MenuItem

This property does not associate the input gesture with the menu item; it simply adds text to the menu item. The application must handle the user's input to carry out the action

您可以做的是在您的 window 中使用指定的输入手势

创建 RoutedUICommand
public partial class MainWindow : Window
{
    public static readonly RoutedCommand OptionsCommand = new RoutedUICommand("Options", "OptionsCommand", typeof(MainWindow), new InputGestureCollection(new InputGesture[]
        {
            new KeyGesture(Key.O, ModifierKeys.Control)
        }));

    //...
}

然后在 XAML 中将该命令绑定到某个方法,将该命令设置为针对 MenuItem。在这种情况下,InputGestureTextHeader 都将从 RoutedUICommand 中提取出来,因此您无需针对 MenuItem

进行设置
<Window.CommandBindings>
    <CommandBinding Command="{x:Static local:MainWindow.OptionsCommand}" Executed="Options_Click"/>
</Window.CommandBindings>
<Menu>
    <!-- -->
    <MenuItem Command="{x:Static local:MainWindow.OptionsCommand}"/>
</Menu>