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

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

    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() генерируется автоматически.

<p id="AutBody_Root1075"><strong>Перечисление элементов коллекции Windows</strong></p>

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

static void MinimizeAllWindows()

{

  foreach (Window wnd in Application.Current.Windows)

  {

    wnd.WindowState = WindowState.Minimized;

  }

}

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

<p id="AutBody_Root1076"><strong>Роль класса Window</strong></p>

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

На рис. 24.1 показана цепочка наследования (и реализуемые интерфейсы) для класса System.Windows.Window, как она выглядит в браузере объектов Visual Studio.

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

<p id="AutBody_Root1077"><strong>Роль класса System.Windows.Controls.ContentControl</strong></p>

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

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

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

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

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных