внимание, что система меню стыкована с верхней частью
DockPanel
. Кроме того, элемент
Separator
применяется для добавления в систему меню тонкой горизонтальной линии прямо перед пунктом
Exit
. Значения
Header
для каждого
MenuItem
содержат символ подчеркивания (например,
_Exit
). Подобным образом указывается символ, который будет подчеркиваться, когда конечный пользователь нажмет клавишу <Alt> (для ввода клавиатурного сокращения). Символ подчеркивания используется вместо символа
&
в Windows Forms, т.к. язык XAML основан на XML, а символ
&
в XML имеет особый смысл.
После построения системы меню необходимо реализовать различные обработчики событий. Прежде всего, есть обработчик пункта меню File? Exit (Файл?Выход),
FileExit_Click
, который просто закрывает окно, что в свою очередь приводит к завершению приложения, поскольку это окно самого высшего уровня. Обработчики событий
MouseEnter
и
MouseExit
для каждого подэлемента будут в итоге обновлять строку состояния; однако пока просто оставьте их пустыми. Наконец, обработчик
ToolsSpellingHints_Click
для пункта меню Tools?Spelling Hints также оставьте пока пустым. Ниже показаны текущие обновления файла отделенного кода (в том числе обновленные операторы
Наряду с тем, что всегда полезно знать, как вручную определять элементы в XAML, такая работа может быть слегка утомительной. В Visual Studio поддерживается возможность визуального конструирования систем меню, панелей инструментов, строк состояния и многих других элементов управления пользовательского интерфейса. Щелчок правой кнопкой мыши на элементе управления
Menu
приводит к открытию контекстного меню, содержащего Add MenuItem (Добавить MenuItem), который позволяет добавить новый пункт меню в элемент управления
Menu
. После добавления набора пунктов верхнего уровня можно заняться добавлением пунктов подменю, разделителей, развертыванием и свертыванием самого меню и выполнением других связанных с меню операций посредством второго щелчка правой кнопкой мыши.
В оставшейся части примера
MyWordPad
вы увидите финальную сгенерированную разметку XAML; тем не менее, посвятите некоторое время экспериментированию с визуальными конструкторами.
Построение панели инструментов
Панели инструментов (представляемые в WPF классом
ToolBar
) обычно предлагают альтернативный способ активизации пунктов меню. Поместите следующую разметку непосредственно после закрывающего дескриптора определения
Menu
:
<!-- Поместить панель инструментов под областью меню -->
, которые предназначены для обработки тех же самых событий теми же методами из файла кода. С помощью такого приема можно дублировать обработчики для обслуживания и пунктов меню, и кнопок панели инструментов. Хотя в данной панели применяются типичные нажимаемые кнопки, вы должны принимать во внимание, что тип
ToolBar
"является"
ContentControl
, а потому на его поверхность можно помещать любые типы (скажем, раскрывающиеся списки, изображения и графику). Еще один интересный аспект связан с тем, что кнопка Check (Проверить) поддерживает специальный курсор мыши через свойство