我的关键捷径不起作用

时间:2011-11-22 13:27:41

标签: c# wpf keyboard-shortcuts menuitem

我正在尝试为我的菜单项添加一个快捷方式,但它没有接缝工作。

这是我的菜单项:

<MenuItem Name="openMenuItem" Header="Open file" InputGestureText="Ctrl+O" Command="{Binding OpenFile}"></MenuItem>

我在这里做错了什么?

这是我的菜单图片:

enter image description here

3 个答案:

答案 0 :(得分:5)

回答您特别提出的问题:

  

我在这里做错了什么?

我将您引导至documentation for the InputGestureText property

  

此属性不会将输入手势与菜单项相关联;它只是在菜单项中添加文本。

它的行为与设计一致。 InputGestureText只在菜单项上显示一些文字;它不会改变行为,特别是它实际上并没有听取那个关键动作。这有些出乎意料,因为WinForms 中的相应属性添加了行为,但它也被属性名称上的Text后缀调出 - 它不是输入手势,它只是显示给的文本告诉用户输入手势。当您使用RoutedUICommand时它会自动设置,但是当您自己实现ICommand时,您可以设置InputGestureText并监听关键手势。

你做错了是希望这个属性能够直观地表现出来。你远远不是唯一一个被这个混淆的人。

(显而易见的后续问题是“我如何为我的MVVM命令添加键盘快捷键”,但这是一个单独的问题 - 而且已经多次在StackOverflow上提问和回答;一旦你知道这是正确的问题是,您应该能够搜索现有答案。)

答案 1 :(得分:2)

根据Nick在http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/d5536d93-b570-4e21-8668-641fa519cd95/的说法,您需要添加代码以使其响应快捷方式,如下所示:

public Window1()
{
  FilterCommand.InputGestures.Add(new KeyGesture(Key.O, ModifierKeys.Control));
  InitializeComponent();
}

答案 2 :(得分:1)

预定义的Open和Close以及其他常用命令。看看:ApplicationCommands

你会有类似的东西:

<Menu DockPanel.Dock="Top">
    <MenuItem Command="ApplicationCommands.Paste" Width="75" />
  </Menu>