Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
WPF-практика 5 События и команды.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2.21 Mб
Скачать

Способ 1

  • Определитете в разметке в элементах меню свойство InputGestureText следующим образом

<Menu>

<MenuItem Header="_File">

<MenuItem Command="ApplicationCommands.Open"

InputGestureText="Alt+O" />

<MenuItem Command="ApplicationCommands.Save"

InputGestureText="Alt+S" />

</MenuItem>

</Menu>

  • Запустите приложение и убедитесь, что теперь маркеры команд меню изменились

Способ 2

Вместо разметки изменить свойство InputGestureText можно в процедурном коде, но для этого элементам меню нужно присвоить имена.

  • Удалите в разметке из дескрипторов элементов меню параметры Command и InputGestureText, а добавьте вместо них имена элементов, как показано ниже

<Menu>

<MenuItem Header="_File">

<MenuItem Name="openMenu" />

<MenuItem Name="saveMenu" />

</MenuItem>

</Menu>

  • Добавьте в самый конец обработчика события 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;

}

  • Запустите приложение и убедитесь, что теперь маркеры команд меню изменились в соответствии с введенными нами при формировании новых жестов