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

Упражнение 6. Разработка простого блокнота без механизма команд

В данном упражнении мы разработаем приложение, частично имитирующее текстовый блокнот, но механизм команд WPF применять не будем. В последующем упражнении на базе разработанного кода мы создадим альтернативный вариант текстового блокнота, но уже с использованием команд. Ух-х-х, поехали!

  • Командой Add/New Project добавьте к решению новый проект WPF Application с именем Notepad1 и назначьте его стартовым

Основную часть интерфейса приложения, как и положено, мы создадим декларативно в разметке XAML, а управление - в части процедурного кода C#.

  • Отредактируйте интерфейсную часть окна следующим образом

<Window x:Class="Notepad1.Window1"

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

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

Title="Window1: Управление состоянием источников команд"

Width="500" Height="375"

MinWidth="500" MinHeight="375"

WindowStartupLocation="CenterScreen"

ResizeMode="CanResizeWithGrip"

>

<DockPanel>

</DockPanel>

</Window>

Создание главного меню

  • Добавьте в дескриптор <DockPanel> </DockPanel> разметку создания меню

<DockPanel LastChildFill="True">

<!-- Меню -->

<Menu DockPanel.Dock="Top">

<MenuItem Header="_File">

<MenuItem Header="_New" InputGestureText="Ctrl+N">

</MenuItem>

<MenuItem Header="_Open..." InputGestureText="Ctrl+O" />

<MenuItem Header="_Save" InputGestureText="Ctrl+S" />

<MenuItem Header="Save _As..." />

<Separator />

<MenuItem Header="Page Set_up..." />

<MenuItem Header="P_rint Preview" InputGestureText="Ctrl+F2" />

<MenuItem Header="_Print..." InputGestureText="Ctrl+P" />

<Separator />

<MenuItem Header="E_xit" />

</MenuItem>

<MenuItem Header="_Edit">

<MenuItem Header="_Undo" InputGestureText="Ctrl+Z" />

<MenuItem Header="_Redo" InputGestureText="Ctrl+Y" />

<Separator></Separator>

<MenuItem Header="Cu_t" InputGestureText="Ctrl+X" />

<MenuItem Header="_Copy" InputGestureText="Ctrl+C" />

<MenuItem Header="_Paste" InputGestureText="Ctrl+V" />

<MenuItem Header="De_lete" InputGestureText="Del" />

<Separator></Separator>

<MenuItem Header="_Find..." InputGestureText="Ctrl+F" />

<MenuItem Header="Find _Next" InputGestureText="F3" />

<MenuItem Header="_Replace..." InputGestureText="Ctrl+H" />

<MenuItem Header="_Go To..." InputGestureText="Ctrl+G" />

<Separator></Separator>

<MenuItem Header="Select _All" InputGestureText="Ctrl+A" />

</MenuItem>

<MenuItem Header="F_ormat">

<MenuItem Header="_Font..." />

<Separator />

<MenuItem Header="_Word Wrap" IsCheckable="True" IsChecked="True" InputGestureText="Ctrl+W" />

</MenuItem>

<MenuItem Header="_Help">

<MenuItem Header="_About" />

</MenuItem>

</Menu>

</DockPanel>

Знаки подчеркивания мы использовали для того, чтобы выделить символы, по которым пользователь может раскрывать меню и запускать команды после нажатия клавиш Alt или F10. Отмеченные символы должны быть уникальными как на горизонтальной линейке на уровне разделов, так и в рамках одного раздела меню. Каждому пункту присвоено название команды и клавиатурного жеста. В команде Word Wrap свойство IsCheckable обеспечивает самопереключаемость флажка, а его начальное состояние задается свойством IsChecked.