This article has been localized into Russian by the community.
Работа с App.xaml
App.xaml - это декларативная стартовая точка Вашего приложения. Visual Studio будет автоматически его создавать, при создании нового приложение WPF, включая CodeBehind (App.xaml.cs) файлы. Тут ситуация очень похожа на ту, в которой мы обсуждали Окно: два файла создаются для того, чтобы комфортно работать с разметкой и отделенным кодом.
App.xaml.cs расширяет класс Application, который является базовым классом в приложении WPF Windows. .NET сначала реализует в этом классе стартовые инструкции, а после запускает необходимую страницу WPF. Этот класс, так же, является местом для подписки на важные события в приложении, такие как: старт приложения, необработанные исключения и др., но об этом немного позже.
Одной из наиболее часто используемых функцих App.xaml файла является определение глобальных ресурсов, которые могут быть использованы и доступны из любого уровня приложения (например - глобальные стили). Это мы подробно обсудим немного позже.
Структура App.xaml
При создании нового приложения, автоматически сгенерированный файл App.xaml будет выглядеть примерно так:
<Application x:Class="WpfTutorialSamples.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
StartupUri="MainWindow.xaml">
<Application.Resources>
</Application.Resources>
</Application>
Главное, на что стоит обратить внимание в этом коде, является свойство StartupUri. Собственно, эта часть сигнализирует приложению о том, какое Окно (Window) или Страница (Page) будет домашней при запуске. В нашем случае MainWindow.xaml будет стартовой страницей, но можно изменить ее на любую другую, изменив содержание свойства StartupUri.
В некоторых ситуациях нужен более жесткий контроль над тем, как и когда первое окно открывается. В этом случае можно удалить свойство StartupUri и реализовать этот функцонал во вспомогательном коде, что будет продемонстрировано позже.
Структура App.xaml.cs
Соответствующий файл App.xaml.cs для нового проекта обычно выглядит так:
using System;
using System.Collections.Generic;
using System.Windows;
namespace WpfTutorialSamples
{
public partial class App : Application
{
}
}
Вы увидите, как этот класс расширяет класс Application, позволяя нам реализовывать функционал на уровне приложения. Например, Вы можете подписаться на событие Startup (запуск приложения), в котором можно "вручную" создать стартовое окно.
Вот пример:
<Application x:Class="WpfTutorialSamples.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Startup="Application_Startup">
<Application.Resources></Application.Resources>
</Application>
Обратите внимание, как свойство StartupUri замещается подпиской на событие Startup (подписка на события из XAML будет представлена в последующих главах). В CodeBehind, Вы можете использовать это событие следующим образом:
using System;
using System.Collections.Generic;
using System.Windows;
namespace WpfTutorialSamples
{
public partial class App : Application
{
private void Application_Startup(object sender, StartupEventArgs e)
{
// Create the startup window
MainWindow wnd = new MainWindow();
// Do stuff here, e.g. to the window
wnd.Title = "Something else";
// Show the window
wnd.Show();
}
}
}
Отличным фактом в данном примере, по сравнению с простым использованием свойства StartupUri, является то, что мы манипулируем стартовым окном еще до его появления. В примере, мы изменили заголовок окна (не на самый полезный), но также, Вы можете подписаться на события или, возможно, показать заставку (Splash screen), ведь когда появляется полный контроль - появляются новые возможным. Именно эти возможности мы изучим более глубоко в следующих главах руководства.