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

Построение класса приложения
В любом приложении 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) => { /* Запуск приложения */ };
app.Exit += (s, e) => { /* Завершение приложения */ };
}
}
В обработчике события
Startup
Exit
На заметку! Метод
Main()
[STAThread]
Main()
Main()
Main()
Перечисление элементов коллекции Windows
Еще одним интересным свойством класса
Application
Windows
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

По мере чтения этой и последующих глав вы начнете понимать функциональность, предлагаемую многими базовыми классами WPF. Далее представлен краткий обзор функциональности каждого базового класса (полные сведения ищите в документации по .NET 5).
Роль класса System.Windows.Controls.ContentControl
Непосредственным родительским классом
Window
ContentControl
ContentControl
Content
ContentControl
Например, когда речь идет о типичном "кнопочном" элементе управления, то обычно предполагается, что его содержимым будет простой строковый литерал (ОК, Cancel, Abort и т.д.). Если для описания элемента управления WPF применяется XAML, а значение, которое необходимо присвоить свойству
Content
Content
<b><! -- Установка значения Content в открывающем элементе --></b>
<Button Height="80" Width="100" Content="OK"/>
На заметку! Свойство
Content
Однако содержимое может быть практически любым. Например, пусть нужна "кнопка", которая содержит в себе что-то более интересное, нежели простую строку — возможно специальную графику или текстовый фрагмент. В других инфраструктурах для построения пользовательских интерфейсов, таких как Windows Forms, потребовалось бы создать специальный элемент управления, что могло повлечь за собой написание значительного объема кода и сопровождение полностью нового класса. Благодаря модели содержимого WPF необходимость в этом отпадает.