C# 我的快捷键不是';行不通

C# 我的快捷键不是';行不通,c#,wpf,keyboard-shortcuts,menuitem,C#,Wpf,Keyboard Shortcuts,Menuitem,我正在尝试为我的菜单项添加快捷方式,但它无法正常工作 这是我的菜单: <MenuItem Name="openMenuItem" Header="Open file" InputGestureText="Ctrl+O" Command="{Binding OpenFile}"></MenuItem> 我做错了什么 这是我的菜单图片: 根据Nick at的说法:您需要添加代码使其响应快捷方式,如下所示: public Window1() { FilterComma

我正在尝试为我的菜单项添加快捷方式,但它无法正常工作

这是我的菜单:

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

我做错了什么

这是我的菜单图片:

根据Nick at的说法:您需要添加代码使其响应快捷方式,如下所示:

public Window1()
{
  FilterCommand.InputGestures.Add(new KeyGesture(Key.O, ModifierKeys.Control));
  InitializeComponent();
}
根据Nick at的说法:您需要添加代码以使其响应快捷方式,如下所示:

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

有用于打开和关闭以及其他常用命令的预定义命令。看看:

你会有这样的想法:

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

有用于打开和关闭以及其他常用命令的预定义命令。看看:

你会有这样的想法:

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

针对您特别提出的问题:

我做错了什么

我指示您前往:

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

它的行为符合设计
InputGestureText
仅在菜单项上显示一些文本;它不会改变行为,特别是,它实际上不会倾听那个关键的手势。这有点出乎意料,因为WinForms中的相应属性确实添加了行为,但它也由属性名称上的
Text
后缀调用——这不是输入手势,只是显示的文本告诉用户输入手势。当您使用RoutedUICommand时,它会自动设置,但当您自己实现ICommand时,则由您自己设置
InputGestureText
并聆听按键手势

你所做的错事是期望这个属性直观地表现出来。你不是唯一一个被这搞糊涂的人


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

针对您特别提出的问题:

我做错了什么

我指示您前往:

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

它的行为符合设计
InputGestureText
仅在菜单项上显示一些文本;它不会改变行为,特别是,它实际上不会倾听那个关键的手势。这有点出乎意料,因为WinForms中的相应属性确实添加了行为,但它也由属性名称上的
Text
后缀调用——这不是输入手势,只是显示的文本告诉用户输入手势。当您使用RoutedUICommand时,它会自动设置,但当您自己实现ICommand时,则由您自己设置
InputGestureText
并聆听按键手势

你所做的错事是期望这个属性直观地表现出来。你不是唯一一个被这搞糊涂的人


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

当你说“它似乎不起作用”时,这是否意味着您会收到一条错误消息、一个异常、一条VS输出窗口中的消息,什么都没有?不。这意味着当我按ctrl+o时什么都没有发生,但当我用鼠标单击时菜单工作。当您说“它似乎不工作”时,这可能会有所帮助,这是否意味着您会收到一条错误消息、一个异常,VS输出窗口中有一条消息,没有?没有。这意味着当我按ctrl+o时没有发生任何事情,但当我用鼠标单击时菜单会工作。这可能会在该示例中很有帮助。他们使用RoutedCommand,但我绑定到ICommand。那我该怎么办?有没有一种方法可以将输入手势添加到
ICommand
,例如所谓的
RelayCommand
DelegateCommand
?在这个例子中,他们使用的是RoutedCommand,但我绑定到ICommand。那我该怎么办?有没有办法将输入手势添加到
ICommand
,例如所谓的
RelayCommand
DelegateCommand