Язык программирования C#9 и платформа .NET5
{<b> // Закрыть это окно.</b>this.Close();}protected void ToolsSpellingHints_Click(object sender, RoutedEventArgs args){}protected void MouseEnterExitArea(object sender, RoutedEventArgs args){}protected void MouseEnterToolsHintsArea(object sender, RoutedEventArgs args){}protected void MouseLeaveArea(object sender, RoutedEventArgs args){}}Визуальное построение меню
Наряду с тем, что всегда полезно знать, как вручную определять элементы в XAML, такая работа может быть слегка утомительной. В Visual Studio поддерживается возможность визуального конструирования систем меню, панелей инструментов, строк состояния и многих других элементов управления пользовательского интерфейса. Щелчок правой кнопкой мыши на элементе управления
приводит к открытию контекстного меню, содержащего Add MenuItem (Добавить MenuItem), который позволяет добавить новый пункт меню в элемент управленияMenu. После добавления набора пунктов верхнего уровня можно заняться добавлением пунктов подменю, разделителей, развертыванием и свертыванием самого меню и выполнением других связанных с меню операций посредством второго щелчка правой кнопкой мыши.MenuВ оставшейся части примера
вы увидите финальную сгенерированную разметку XAML; тем не менее, посвятите некоторое время экспериментированию с визуальными конструкторами.MyWordPadПостроение панели инструментов
Панели инструментов (представляемые в WPF классом
) обычно предлагают альтернативный способ активизации пунктов меню. Поместите следующую разметку непосредственно после закрывающего дескриптора определенияToolBar:Menu<!-- Поместить панель инструментов под областью меню --><ToolBar DockPanel.Dock ="Top" ><Button Content ="Exit" MouseEnter ="MouseEnterExitArea"MouseLeave ="MouseLeaveArea" Click ="FileExit_Click"/><Separator/><Button Content ="Check" MouseEnter ="MouseEnterToolsHintsArea"MouseLeave ="MouseLeaveArea" Click ="ToolsSpellingHints_Click"Cursor="Help" /></ToolBar>Ваш элемент управления
образован из двух элементов управленияToolBar, которые предназначены для обработки тех же самых событий теми же методами из файла кода. С помощью такого приема можно дублировать обработчики для обслуживания и пунктов меню, и кнопок панели инструментов. Хотя в данной панели применяются типичные нажимаемые кнопки, вы должны принимать во внимание, что типButton"является"ToolBar, а потому на его поверхность можно помещать любые типы (скажем, раскрывающиеся списки, изображения и графику). Еще один интересный аспект связан с тем, что кнопка Check (Проверить) поддерживает специальный курсор мыши через свойствоContentControl.CursorНа заметку! Элемент
может быть дополнительно помещен внутрь элементаToolbar, который управляет компоновкой, стыковкой и перетаскиванием для набора объектовToolBarTray.ToolBarПостроение строки состояния
Элемент управления строкой состояния (
) стыкуется с нижней частьюStatusBarи содержит единственный элемент управленияDockPanel, который ранее в главе не использовался. ЭлементTextBlockможно применять для хранения текста с форматированием вроде выделения полужирным и подчеркивания, добавления разрывов строк и т.д. Поместите приведенную ниже разметку сразу после предыдущего определения элемента управленияTextBlock:ToolBar<b><!-- Разместить строку состояния внизу --></b><StatusBar DockPanel.Dock ="Bottom" Background="Beige" ><StatusBarItem><TextBlock Name="statBarText" Text="Ready"/></StatusBarItem></StatusBar>Завершение проектирования пользовательского интерфейса
Финальный аспект проектирования нашего пользовательского интерфейса связан с определением поддерживающего разделители элемента
, в котором определены две колонки. Слева находится элемент управленияGrid, помещенный внутрьExpander, который будет отображать список предполагаемых вариантов правописания, а справа — элементStackPanelс поддержкой многострочного текста, линеек прокрутки и включенной проверкой орфографии. ЭлементTextBoxможет быть целиком размещен в левой части родительской панелиGrid. Чтобы завершить определение пользовательского интерфейса окна, добавьте следующую разметку XAML, расположив ее непосредственно под разметкой, которая описываетDockPanel:StatusBar<Grid DockPanel.Dock ="Left" Background ="AliceBlue"><b> <!-- Определить строки и колонки --></b>