我正在尝试为我的菜单项添加一个快捷方式,但它没有接缝工作。
这是我的菜单项:
<MenuItem Name="openMenuItem" Header="Open file" InputGestureText="Ctrl+O" Command="{Binding OpenFile}"></MenuItem>
我在这里做错了什么?
这是我的菜单图片:
答案 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>