TOC

This article has been localized into Russian by the community.

Приложение WPF:

Работа с 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. Собственно, эта часть сигнализирует приложению о том, какая Страница или Окно будет являться домашним при запуске. В этом случае, MainWindow.xaml будет домашней страницей, но при желании Вы можете изменить ее на любую другую, просто изменив содержание свойства StartupUri

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

Структура 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), ведь когда появляется полный контроль - появляются новые возможным. Именно эти возможности мы изучим более глубоко в следующих главах руководства.

This article has been fully translated into the following languages: Is your preferred language not on the list? Click here to help us translate this article into your language!