Рейтинговые книги
Читем онлайн Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 494 495 496 497 498 499 500 501 502 ... 642

Вашей целью является конструирование компоновки, в которой главное окно имеет расположенную в верхней части систему меню, под ней — панель инструментов и в нижней части окна — строку состояния. Строка состояния будет содержать область для текстовых подсказок, которые отображаются при выборе пользователем пункта меню (или кнопки в панели инструментов). Система меню и панель инструментов предоставят триггеры пользовательского интерфейса для закрытия приложения и отображения вариантов правописания в виджете Expander.

На рис. 25.14 показана начальная компоновка; она также иллюстрирует возможности правописания в рамках инфраструктуры WPF.

Чтобы приступить к построению интересующего пользовательского интерфейса, модифицируйте начальное определение XAML типа Window для использования дочернего элемента DockPanel вместо стандартного элемента управления Grid:

<Window x:Class="MyWordPad.MainWindow"

  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 следующую разметку:

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

&lt;Menu DockPanel.Dock =&quot;Top&quot;

    HorizontalAlignment=&quot;Left&quot; Background=&quot;White&quot; BorderBrush =&quot;Black&quot;&gt;

(window.adrunTag = window.adrunTag || []).push({v: 1, el: 'adrun-4-390', c: 4, b: 390})

  &lt;MenuItem Header=&quot;_File&quot;&gt;

  &lt;Separator/&gt;

    &lt;MenuItem Header =&quot;_Exit&quot; MouseEnter =&quot;MouseEnterExitArea&quot;

        MouseLeave =&quot;MouseLeaveArea&quot; Click =&quot;FileExit_Click&quot;/&gt;

    &lt;/MenuItem&gt;

    &lt;MenuItem Header=&quot;_Tools&quot;&gt;

      &lt;MenuItem Header =&quot;_Spelling Hints&quot;

        MouseEnter =&quot;MouseEnterToolsHintsArea&quot;

        MouseLeave =&quot;MouseLeaveArea&quot; Click =&quot;ToolsSpellingHints_Click&quot;/&gt;

  &lt;/MenuItem&gt;

&lt;/Menu&gt;

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

После построения системы меню необходимо реализовать различные обработчики событий. Прежде всего, есть обработчик пункта меню File► Exit (Файл►Выход), FileExit_Click(), который просто закрывает окно, что в свою очередь приводит к завершению приложения, поскольку это окно самого высшего уровня. Обработчики событий MouseEnter и MouseExit для каждого подэлемента будут в итоге обновлять строку состояния; однако пока просто оставьте их пустыми. Наконец, обработчик ToolsSpellingHints_Click() для пункта меню ToolsSpelling 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)

1 ... 494 495 496 497 498 499 500 501 502 ... 642
На этой странице вы можете бесплатно читать книгу Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю бесплатно.
Похожие на Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю книги

Оставить комментарий