Izibook.club
Читать онлайн книги!
  • Главная
  • Жанры
  • Авторы
  • ТОП книг
  • ТОП авторов
  • Контакты

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

Часть 477 из 642 Информация о книге
Язык программирования C#9 и платформа .NET5 - _180.png

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

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

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

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

class MyApp : Application

{

  [STAThread]

  static void Main(string[] args)

  {

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

    MyApp app = new MyApp();

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

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

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

  }

}

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

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.

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

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

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

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

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

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

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

<b>&lt;! -- Установка значения Content в открывающем элементе --&gt;</b>

&lt;Button Height=&quot;80&quot; Width=&quot;100&quot; Content=&quot;OK&quot;/&gt;

На заметку! Свойство

Content
можно также устанавливать в коде С#, что позволяет изменять внутренности элемента управления во время выполнения.

Однако содержимое может быть практически любым. Например, пусть нужна "кнопка", которая содержит в себе что-то более интересное, нежели простую строку — возможно специальную графику или текстовый фрагмент. В других инфраструктурах для построения пользовательских интерфейсов, таких как Windows Forms, потребовалось бы создать специальный элемент управления, что могло повлечь за собой написание значительного объема кода и сопровождение полностью нового класса. Благодаря модели содержимого WPF необходимость в этом отпадает.

Перейти к странице:
Предыдущая страница
Следующая страница
Жанры
  • Военное дело 4
    • Спецслужбы 4
  • Деловая литература 206
    • Банковское дело 3
    • Деловая литература 2
    • Корпоративная культура 13
    • Личные финансы 21
    • Малый бизнес 2
    • Маркетинг, PR, реклама 47
    • О бизнесе популярно 114
    • Отраслевые издания 2
    • Управление, подбор персонала 17
    • Ценные бумаги, инвестиции 3
    • Экономика 28
  • Детективы и триллеры 2790
    • Боевики 314
    • Дамский детективный роман 22
    • Детективы 424
    • Иронические детективы 182
    • Исторические детективы 417
    • Классические детективы 224
    • Криминальные детективы 159
    • Крутой детектив 120
    • Маньяки 15
    • Медицинский триллер 2
    • Политические детективы 44
    • Полицейские детективы 236
    • Прочие Детективы 822
    • Техно триллер 3
    • Триллеры 1217
    • Шпионские детективы 101
  • Детские 501
    • Детская образовательная литература 13
    • Детская проза 166
    • Детские остросюжетные 53
    • Детские приключения 265
    • Детские стихи 21
    • Детский фольклор 1
    • Книга-игра 1
    • Прочая детская литература 78
  • Детские книги 540
    • Детская фантастика 198
    • Детские детективы 3
    • Книги для подростков 23
    • Сказки 272
  • Документальная литература 814
    • Биографии и мемуары 534
    • Военная документалистика 7
    • Искусство и Дизайн 15
    • Критика 11
    • Научпоп 9
    • Прочая документальная литература 73
    • Публицистика 258
  • Дом и Семья 216
    • Домашние животные 14
    • Здоровье и красота 34
    • Кулинария 33
    • Прочее домоводство 8
    • Развлечения 3
    • Сад и Огород 8
    • Сделай сам 2
    • Спорт 10
    • Хобби и ремесла 7
    • Эротика и секс 111
  • Драматургия 109
    • Драма 106
    • Киносценарии 3
    • Мистерия 1
    • Трагедия 1
  • Жанр не определен 8
    • Разное 8
  • Компьютеры и Интернет 15
    • Базы данных 3
    • Интернет 3
    • Программирование 1
    • Программное обеспечение 1
    • Прочая компьютерная литература 10
  • Любовные романы 26694
    • Исторические любовные романы 956
    • Короткие любовные романы 2695
    • Любовно-фантастические романы 11079
    • Остросюжетные любовные романы 996
    • Порно 90
    • Прочие любовные романы 57
    • Слеш 417
    • Современные любовные романы 11018
    • Фемслеш 44
    • Эротика 6584
  • Научно-образовательная 377
    • Альтернативная медицина 5
    • Астрономия и Космос 7
    • Биология 33
    • Биофизика 2
    • Биохимия 2
    • Ботаника 3
    • Военная история 4
    • Геология и география 3
    • Государство и право 1
    • Детская психология 16
    • Зоология 3
    • Иностранные языки 2
    • Культурология 46
    • Литературоведение 20
    • Медицина 35
    • Обществознание 7
    • Педагогика 20
    • Политика 22
    • Прочая научная литература 58
    • Психотерапия и консультирование 52
    • Религиоведение 7
    • Секс и семейная психология 31
    • Технические науки 4
    • Физика 9
    • Философия 35
    • Химия 3
    • Экология 3
    • Юриспруденция 9
    • Языкознание 18
  • Образование 525
    • Бизнес 45
    • Биография и мемуары 46
    • Здоровье 10
    • История 298
    • Карьера 4
    • Психология 231
  • Поэзия и драматургия 43
    • Басни 2
    • Драматургия 11
    • Лирика 2
    • Поэзия 31
  • Приключения 765
    • Вестерны 14
    • Исторические приключения 422
    • Морские приключения 80
    • Природа и животные 31
    • Прочие приключения 212
    • Путешествия и география 52
  • Проза 2441
    • Антисоветская литература 5
    • Афоризмы 1
    • Военная проза 111
    • Историческая проза 322
    • Классическая проза 136
    • Контркультура 14
    • Магический реализм 95
    • Новелла 14
    • Повесть 24
    • Проза прочее 21
    • Рассказ 73
    • Роман 104
    • Русская классическая проза 73
    • Семейный роман/Семейная сага 3
    • Сентиментальная проза 10
    • Советская классическая проза 48
    • Современная проза 1876
    • Эпистолярная проза 2
    • Эпопея 5
    • Эссе, очерк, этюд, набросок 3
  • Прочее 1523
    • Газеты и журналы 5
    • Изобразительное искусство, фотография 12
    • Кино 13
    • Музыка 11
    • Подростковая литература 6
    • Театр 5
    • Фанфик 1476
  • Религия и духовность 367
    • Астрология 1
    • Буддизм 4
    • Православие 1
    • Прочая религиозная литература 4
    • Религия 24
    • Самосовершенствование 141
    • Хиромантия 1
    • Эзотерика 212
    • Язычество 1
  • Справочная литература 42
    • Прочая справочная литература 3
    • Путеводители 10
    • Руководства 12
    • Справочники 15
    • Энциклопедии 9
  • Старинная литература 154
    • Античная литература 1
    • Древневосточная литература 5
    • Мифы. Легенды. Эпос 34
    • Прочая старинная литература 115
  • Техника 2
    • Автомобили и ПДД 1
    • Архитектура 1
  • Фантастика и фентези 28778
    • Альтернативная история 4227
    • Боевая фантастика 5409
    • Героическая фантастика 1497
    • Городское фэнтези 2314
    • Готический роман 14
    • Детективная фантастика 755
    • Ироническая фантастика 102
    • Ироническое фэнтези 84
    • Историческое фэнтези 533
    • Киберпанк 321
    • Космическая фантастика 1828
    • Космоопера 56
    • ЛитРПГ 1337
    • Любовная фантастика 186
    • Любовное фэнтези 115
    • Мистика 525
    • Научная фантастика 937
    • Попаданцы 9557
    • Постапокалипсис 923
    • Сказочная фантастика 26
    • Социально-философская фантастика 548
    • Стимпанк 152
    • Технофэнтези 146
    • Ужасы 103
    • Ужасы и мистика 830
    • Фантастика 254
    • Фантастика: прочее 232
    • Фэнтези 11593
    • Эпическая фантастика 236
    • Юмористическая фантастика 1076
    • Юмористическое фэнтези 1690
  • Фольклор 7
    • Загадки 1
    • Народные сказки 5
    • Фольклор: прочее 2
  • Юмор 195
    • Анекдоты 1
    • Комедии 1
    • Прочий юмор 67
    • Сатира 3
    • Юмористическая проза 124
    • Юмористические стихи 5
Izibook.club

Бесплатная онлайн библиотека для чтения книг без регистрации с телефона или компьютера. У нас собраны последние новинки, мировые бестселлеры книжного мира.

Контакты
  • pereezdsayta@yandex.ru
Информация
  • Карта сайта
© izibook.club, 2026. | Вход
Этот сайт использует cookie для хранения данных. Продолжая пользоваться сайтом, вы даете свое согласие на работу с этими данными в соответствии с нашей политикой конфиденциальности.
Я согласен