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
。在这种情况下,InputGestureText
和 Header
都将从 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>
我正在尝试使用
向我的 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
。在这种情况下,InputGestureText
和 Header
都将从 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>