Способ 2. Вместо разметки изменить свойство InputGestureText можно в процедурном коде, но для этого элементам меню нужно присвоить имена. Удалите в разметке из
Вместо разметки изменить свойство InputGestureText можно в процедурном коде, но для этого элементам меню нужно присвоить имена.
Удалите в разметке из дескрипторов элементов меню параметры Command и InputGestureText, а добавьте вместо них имена элементов, как показано ниже
Добавьте в самый конец обработчика события Loaded после кода добавления жестов следующую пару строк динамического присоединения модифицированных команд к меню-источнику
void Window1_Loaded(object sender, RoutedEventArgs e) { // Привязка команд в коде CommandBinding binding = new CommandBinding(); binding.Command = ApplicationCommands.Open; binding.Executed += new ExecutedRoutedEventHandler(OpenCommand_Executed); this.CommandBindings.Add(binding); binding = new CommandBinding(); binding.Command = ApplicationCommands.Save; binding.Executed += new ExecutedRoutedEventHandler(SaveCommand_Executed); this.CommandBindings.Add(binding); // Очистка коллекций прежних жестов команд ApplicationCommands.Open.InputGestures.Clear(); ApplicationCommands.Save.InputGestures.Clear(); // Добавление новых жестов клавиатуры Alt+O и Alt+S InputGesture key = new KeyGesture(Key.O, ModifierKeys.Alt, "Alt+O"); ApplicationCommands.Open.InputGestures.Add(key); // KeyGesture keyGesture = new KeyGesture(Key.S, ModifierKeys.Alt, "Alt+S"); ApplicationCommands.Save.InputGestures.Add(keyGesture); // Добавление новых жестов мыши Ctrl+LeftClick и Ctrl+RightClick InputGesture mouse = new MouseGesture(MouseAction.LeftClick, ModifierKeys.Control); ApplicationCommands.Open.InputGestures.Add(mouse); // MouseGesture mouseGesture = new MouseGesture(); mouseGesture.MouseAction = MouseAction.RightClick; mouseGesture.Modifiers = ModifierKeys.Control; ApplicationCommands.Save.InputGestures.Add(mouseGesture); // Присоединяем модифицированные команды к меню-источнику openMenu.Command = ApplicationCommands.Open; saveMenu.Command = ApplicationCommands.Save; }
Запустите приложение и убедитесь, что теперь маркеры команд меню изменились в соответствии с введенными нами при формировании новых жестов