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

на главную - закладки

Жанры

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

Понадобится наполнить коллекцию

CommandBindings
, поддерживаемую окном. В разметке XAML потребуется применить синтаксис "свойство-элемент" для определения области
Window.CommandBindings
, в которую помещаются два определения
CommandBinding
. Модифицируйте определение
Window
, как показано ниже:

<Window x:Class="MyWordPad.MainWindow"

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

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

Title="MySpellChecker" Height="331" Width="508"

WindowStartupLocation ="CenterScreen" >

<!--
Это информирует элемент управления Window о том, какие

обработчики вызывать при поступлении команд Open и Save -->

<Window.CommandBindings>

<CommandBinding Command="ApplicationCommands.Open"

Executed="OpenCmdExecuted"

CanExecute="OpenCmdCanExecute"/>

<CommandBinding Command="ApplicationCommands.Save"

Executed="SaveCmdExecuted"

CanExecute="SaveCmdCanExecute"/>

</Window.CommandBindings>

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

<DockPanel>

...

</DockPanel>

</Window>

Щелкните правой кнопкой мыши на каждом из атрибутов

Executed
и
CanExecute
в редакторе XAML и выберите в контекстном меню пункт Navigate to Event Handler (Перейти к обработчику события). Как объяснялось в главе 24, в результате автоматически сгенерируется заготовка кода для обработчика события. Теперь в файле кода C# для окна должны присутствовать четыре пустых обработчика событий.

Реализация обработчиков события

CanExecute
будет сообщать окну, что можно инициировать соответствующие события
Executed
в любой момент, для чего свойство
CanExecute
входного объекта
CanExecuteRoutedEventArgs
устанавливается в
true
:

private void OpenCmdCanExecute(object sender, CanExecuteRoutedEventArgs e)

{

e.CanExecute = true;

}

private void SaveCmdCanExecute(object sender, CanExecuteRoutedEventArgs e)

{

e.CanExecute = true;

}

Обработчики соответствующего события

Executed
выполняют действительную работу по отображению диалоговых окон открытия и сохранения файла; они также отправляют данные из
TextBox
в файл. Начните с импортирования пространств имен
System.IO
и
Microsoft.Win32
в файл кода. Окончательный код прямолинеен:

private void OpenCmdExecuted(object sender, ExecutedRoutedEventArgs e)

{

// Создать диалоговое окно открытия файла и показать

// в нем только текстовые файлы.

var openDlg = new OpenFileDialog { Filter = "Text Files |*.txt"};

// Был ли совершен щелчок на кнопке ОК?

if (true == openDlg.ShowDialog)

{

// Загрузить содержимое выбранного файла.

string dataFromFile = File.ReadAllText(openDlg.FileName);

// Отобразить строку в TextBox.

txtData.Text = dataFromFile;

}

}

private void SaveCmdExecuted(object sender, ExecutedRoutedEventArgs e)

{

var saveDlg = new SaveFileDialog { Filter = "Text Files |*.txt"};

// Был ли совершен щелчок на кнопке ОК?

if (true == saveDlg.ShowDialog)

{

// Сохранить данные из TextBox в указанном файле.

File.WriteAllText(saveDlg.FileName, txtData.Text);

}

}

На заметку! Система команд WPF более подробно рассматривается в главе 28, где будут создаваться специальные команды на основе

ICommand
и
RelayCommands
.

Итак, пример и начальное знакомство с элементами управления WPF завершены. Вы узнали, как работать с базовыми командами, системами меню, строками состояния, панелями инструментов, вложенными панелями и несколькими основными элементами пользовательского интерфейса (вроде

TextBox
и
Expander
). В следующем примере вы будете иметь дело с более экзотическими элементами управления, а также с рядом важных служб WPF.

Понятие маршрутизируемых событий

Вы могли заметить, что в предыдущем примере кода передавался параметр

RoutedEventArgs
, а не
EventArgs
. Модель маршрутизируемых событий является усовершенствованием стандартной модели событий CLR и спроектирована для того, чтобы обеспечить возможность обработки событий в манере, подходящей описанию XAML дерева объектов. Предположим, что имеется новый проект приложения WPF по имени
WpfRoutedEvents
. Модифицируйте описание XAML начального окна, добавив следующий элемент управления
Button
, который определяет сложное содержимое:

Поделиться:
Популярные книги

Назад в ссср 6

Дамиров Рафаэль
6. Курсант
Фантастика:
попаданцы
альтернативная история
6.00
рейтинг книги
Назад в ссср 6

Низший - Инфериор. Компиляция. Книги 1-19

Михайлов Дем Алексеевич
Фантастика 2023. Компиляция
Фантастика:
боевая фантастика
5.00
рейтинг книги
Низший - Инфериор. Компиляция. Книги 1-19

Архонт

Прокофьев Роман Юрьевич
5. Стеллар
Фантастика:
боевая фантастика
рпг
7.80
рейтинг книги
Архонт

Безумный Макс. Ротмистр Империи

Ланцов Михаил Алексеевич
2. Безумный Макс
Фантастика:
героическая фантастика
альтернативная история
4.67
рейтинг книги
Безумный Макс. Ротмистр Империи

Единственная для темного эльфа 3

Мазарин Ан
3. Мир Верея. Драконья невеста
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Единственная для темного эльфа 3

Академия водного пламени

Зимина Юлия
1. Академия юных сердец
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Академия водного пламени

Начальник милиции. Книга 3

Дамиров Рафаэль
3. Начальник милиции
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Начальник милиции. Книга 3

Сердце Дракона. Том 12

Клеванский Кирилл Сергеевич
12. Сердце дракона
Фантастика:
фэнтези
героическая фантастика
боевая фантастика
7.29
рейтинг книги
Сердце Дракона. Том 12

Прометей: Неандерталец

Рави Ивар
4. Прометей
Фантастика:
героическая фантастика
альтернативная история
7.88
рейтинг книги
Прометей: Неандерталец

На границе империй. Том 4

INDIGO
4. Фортуна дама переменчивая
Фантастика:
космическая фантастика
6.00
рейтинг книги
На границе империй. Том 4

Земная жена на экспорт

Шах Ольга
Любовные романы:
любовно-фантастические романы
5.57
рейтинг книги
Земная жена на экспорт

Возвышение Меркурия. Книга 5

Кронос Александр
5. Меркурий
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Возвышение Меркурия. Книга 5

Возмездие

Злобин Михаил
4. О чем молчат могилы
Фантастика:
фэнтези
7.47
рейтинг книги
Возмездие

Кодекс Крови. Книга VII

Борзых М.
7. РОС: Кодекс Крови
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Кодекс Крови. Книга VII