Моя комбинация клавиш не работает - PullRequest
1 голос
/ 22 ноября 2011

Я пытаюсь добавить ярлык в пункт меню, но он не работает.

вот мой пункт меню:

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

Что я здесь не так делаю?

вот изображение моего меню:

enter image description here

Ответы [ 3 ]

5 голосов
/ 22 ноября 2011

В ответ на вопрос, который вы конкретно задали:

Что я здесь не так делаю?

Я направляю вас к документации для InputGestureText свойство :

Это свойство не связывает жест ввода с элементом меню;он просто добавляет текст в пункт меню.

Он ведет себя так, как задумано.InputGestureText просто отображает некоторый текст в пункте меню;он не меняет поведение и, в частности, фактически не слушает этот ключевой жест.Это несколько неожиданно, учитывая, что соответствующее свойство в WinForms добавляет поведение , но оно также вызывается суффиксом Text в имени свойства - это не жест ввода, это просто текст, которыйотображается , чтобы сообщить пользователю о жесте ввода.Он устанавливается автоматически, когда вы используете RoutedUICommand, но когда вы сами реализуете ICommand, вам нужно одновременно установить InputGestureText и прослушать жест ключа.

То, что вы делаете неправильно, ожидает, что это свойство будет вести себяинтуитивно.Вы далеко не единственный, кого это смущает.

(Очевидный последующий вопрос: «Как добавить сочетание клавиш для моей команды MVVM», но это отдельный вопрос - итот, который задавали и отвечали в StackOverflow несколько раз, когда вы знаете, что это правильный вопрос, который вы хотите задать, вы сможете найти существующие ответы.)

2 голосов
/ 22 ноября 2011

По словам Ника по адресу: 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();
}
1 голос
/ 22 ноября 2011

Есть предопределенные команды для открытия и закрытия и других распространенных команд.Взгляните на: ApplicationCommands

Вы бы хотели что-то вроде:

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