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

на главную

Жанры

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

На заметку! Если вы создавали пользовательские интерфейсы для настольных приложений с использованием API-интерфейса Windows Forms, то имейте в виду, что сборки

System.Windows.Forms.*
и
System.Drawing.*
никак не связаны с WPF. Они относятся к первоначальному инструментальному набору .NET для построения графических пользовательских интерфейсов, т.е. Windows Forms/GDI+.

Роль класса Application

Класс

System.Windows.Application
представляет глобальный экземпляр выполняющегося приложения WPF.
В нем имеется метод
Run
(для запуска приложения) и комплект событий, которые можно обрабатывать для взаимодействия с приложением на протяжении его времени жизни (наподобие
Startup
и
Exit
). В табл. 24.5 описаны основные свойства класса
Application
.

Построение класса приложения

В любом приложении WPF нужно будет определить класс, расширяющий

Application
. Внутри такого класса определяется точка входа программы (метод
Main
), которая создает экземпляр данного подкласса и обычно обрабатывает события
Startup
и
Exit
(при необходимости). Вот пример:

// Определить глобальный объект приложения для этой программы WPF.

class MyApp : Application

{

[STAThread]

static void Main(string[] args)

{

// Создать объект приложения.

MyApp app = new MyApp;

// Зарегистрировать события Startup/Exit.

app.Startup += (s, e) => { /* Запуск приложения */ };

app.Exit += (s, e) => { /* Завершение приложения */ };

}

}

В обработчике события

Startup
чаще всего обрабатываются входные аргументы командной строки и запускается главное окно программы. Как и следовало ожидать, обработчик события
Exit
представляет собой место, куда можно поместить любую необходимую логику завершения программы(например, сохранение пользовательских предпочтений).

На заметку! Метод

Main
приложения WPF должен быть снабжен атрибутом
[STAThread]
, который гарантирует, что любые унаследованные объекты СОМ, используемые приложением, являются безопасными в отношении потоков. Если не аннотировать метод
Main
подобным образом, тогда во время выполнения возникнет исключение. Даже после появления в версии C# 9.0 операторов верхнего уровня вы все равно будете стремиться использовать в приложениях WPF традиционный метод
Main
. В действительности метод
Main
генерируется автоматически.

Перечисление элементов коллекции Windows

Еще одним интересным свойством класса

Application
является
Windows
, обеспечивающее доступ
к коллекции, которая представляет все окна, загруженные в память для текущего приложения WPF. Вспомните, что создаваемые новые объекты
Window
автоматически добавляются в коллекцию
Application.Windows
. Ниже приведен пример метода, который сворачивает все окна приложения(возможно в ответ на нажатие определенного сочетания клавиш или выбор пункта меню конечным пользователем):

static void MinimizeAllWindows

{

foreach (Window wnd in Application.Current.Windows)

{

wnd.WindowState = WindowState.Minimized;

}

}

Вскоре будет построено несколько приложений WPF, а пока давайте выясним основную функциональность типа Window и изучим несколько важных базовых классов WPF.

Роль класса Window

Класс

System.Windows.Window
(из сборки
PresentationFramework.dll
) представляет одиночное окно, которым владеет производный от
Application
класс, включая все отображаемые главным окном диалоговые окна. Тип
Window
вполне ожидаемо имеет несколько родительских классов, каждый из которых привносит дополнительную функциональность.

На рис. 24.1 показана цепочка наследования (и реализуемые интерфейсы) для класса

System.Windows.Window
, как она выглядит в браузере объектов Visual Studio.

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

Роль класса System.Windows.Controls.ContentControl

Непосредственным родительским классом

Window
является класс
ContentControl
, который вполне можно считать самым впечатляющим из всех классов WPF. Базовый класс
ContentControl
снабжает производные типы способностью размещать в себе одиночный фрагмент содержимого, который, выражаясь упрощенно, относится к визуальным данным, помещенным внутрь области элемента управления через свойство
Content
. Модель содержимого WPF позволяет довольно легко настраивать базовый вид и поведение элемента управления
ContentControl
.

Например, когда речь идет о типичном "кнопочном" элементе управления, то обычно предполагается, что его содержимым будет простой строковый литерал (ОК, Cancel, Abort и т.д.). Если для описания элемента управления WPF применяется XAML, а значение, которое необходимо присвоить свойству

Content
, может быть выражено в виде простой строки, тогда вот как установить свойство
Content
внутри открывающего определения элемента:

<!
– - Установка значения Content в открывающем элементе -->

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

Назад в СССР: 1986 Книга 5

Гаусс Максим
5. Спасти ЧАЭС
Фантастика:
попаданцы
альтернативная история
5.75
рейтинг книги
Назад в СССР: 1986 Книга 5

Неудержимый. Книга III

Боярский Андрей
3. Неудержимый
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Неудержимый. Книга III

Мастер 3

Чащин Валерий
3. Мастер
Фантастика:
героическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Мастер 3

Конструктор

Семин Никита
1. Переломный век
Фантастика:
попаданцы
альтернативная история
4.50
рейтинг книги
Конструктор

Наследник Четырех

Вяч Павел
5. Игра топа
Фантастика:
героическая фантастика
рпг
6.75
рейтинг книги
Наследник Четырех

Чехов. Книга 2

Гоблин (MeXXanik)
2. Адвокат Чехов
Фантастика:
фэнтези
альтернативная история
аниме
5.00
рейтинг книги
Чехов. Книга 2

Легат

Прокофьев Роман Юрьевич
6. Стеллар
Фантастика:
боевая фантастика
рпг
6.73
рейтинг книги
Легат

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

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

Идеальный мир для Лекаря 11

Сапфир Олег
11. Лекарь
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 11

Столичный доктор. Том II

Вязовский Алексей
2. Столичный доктор
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Столичный доктор. Том II

Столичный доктор. Том III

Вязовский Алексей
3. Столичный доктор
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Столичный доктор. Том III

Пропала, или Как влюбить в себя жену

Юнина Наталья
2. Исцели меня
Любовные романы:
современные любовные романы
6.70
рейтинг книги
Пропала, или Как влюбить в себя жену

Нефилим

Демиров Леонид
4. Мания крафта
Фантастика:
фэнтези
боевая фантастика
рпг
7.64
рейтинг книги
Нефилим

Бывший муж

Рузанова Ольга
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Бывший муж