Чтение онлайн

ЖАНРЫ

Язык программирования C#9 и платформа .NET5
Шрифт:

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

xmlns:d="http://schemas.microsoft.com/expression/blend/2008"

xmlns:local="clr-namespace:MyWordPad"

mc:Ignorable="d"

Title="My Spell Checker" Height="450" Width="800">

<!
– - Эта панель устанавливает содержимое окна -->

<DockPanel>

</DockPanel>

</Window>

Построение

системы меню

Системы меню в WPF представлены классом Menu, который поддерживает коллекцию объектов

MenuItem
. При построении системы меню в XAML каждый объект
MenuItem
можно заставить обрабатывать разнообразные события, наиболее примечательным из которых является
Click
, возникающее при выборе подэлемента конечным пользователем. В рассматриваемом примере создаются два пункта меню верхнего уровня (File (Файл) и Tools (Сервис); позже будет построено меню Edit (Правка)), которые содержат в себе подэлементы Exit (Выход) и Spelling Hints (Подсказки по правописанию) соответственно.

В дополнение к обработке события

Click
для каждого подэлемента необходимо также обработать события
MouseEnter
и
MouseExit
, которые применяются для установки текста в строке состояния. Добавьте в контекст элемента
DockPanel
следующую разметку:

<!-- Стыковать систему меню к верхней части —>

<Menu DockPanel.Dock ="Top"

HorizontalAlignment="Left" Background="White" BorderBrush ="Black">

<MenuItem Header="_File">

<Separator/>

<MenuItem Header ="_Exit" MouseEnter ="MouseEnterExitArea"

MouseLeave ="MouseLeaveArea" Click ="FileExit_Click"/>

</MenuItem>

<MenuItem Header="_Tools">

<MenuItem Header ="_Spelling Hints"

MouseEnter ="MouseEnterToolsHintsArea"

MouseLeave ="MouseLeaveArea" Click ="ToolsSpellingHints_Click"/>

</MenuItem>

</Menu>

Обратите внимание, что система меню стыкована с верхней частью

DockPanel
. Кроме того, элемент
Separator
применяется для добавления в систему меню тонкой горизонтальной линии прямо перед пунктом
Exit
. Значения
Header
для каждого
MenuItem
содержат символ подчеркивания (например,
_Exit
). Подобным образом указывается символ, который будет подчеркиваться, когда конечный пользователь нажмет клавишу <Alt> (для ввода клавиатурного сокращения). Символ подчеркивания используется вместо символа
&
в Windows Forms, т.к. язык XAML основан на XML, а символ
&
в XML имеет особый смысл.

После построения системы меню необходимо реализовать различные обработчики событий. Прежде всего, есть обработчик пункта меню File? Exit (Файл?Выход),

FileExit_Click
, который просто закрывает окно, что в свою очередь приводит к завершению приложения, поскольку это окно самого высшего уровня. Обработчики событий
MouseEnter
и
MouseExit
для каждого подэлемента будут в итоге обновлять строку состояния; однако пока просто оставьте их пустыми. Наконец, обработчик
ToolsSpellingHints_Click
для пункта меню Tools?Spelling Hints
также оставьте пока пустым. Ниже показаны текущие обновления файла отделенного кода (в том числе обновленные операторы
using
):

using System.IO;

using System.Windows;

using System.Windows.Controls;

using System.Windows.Input;

using Microsoft.Win32;

public partial class MainWindow : Window

{

public MainWindow

{

InitializeComponent;

}

protected void FileExit_Click(object sender, RoutedEventArgs args)

{

// Закрыть это окно.

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 поддерживается возможность визуального конструирования систем меню, панелей инструментов, строк состояния и многих других элементов управления пользовательского интерфейса. Щелчок правой кнопкой мыши на элементе управления

Menu
приводит к открытию контекстного меню, содержащего Add MenuItem (Добавить MenuItem), который позволяет добавить новый пункт меню в элемент управления
Menu
. После добавления набора пунктов верхнего уровня можно заняться добавлением пунктов подменю, разделителей, развертыванием и свертыванием самого меню и выполнением других связанных с меню операций посредством второго щелчка правой кнопкой мыши.

В оставшейся части примера

MyWordPad
вы увидите финальную сгенерированную разметку XAML; тем не менее, посвятите некоторое время экспериментированию с визуальными конструкторами.

Построение панели инструментов

Панели инструментов (представляемые в 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"

Поделиться с друзьями: