TOC

This article has been localized into Polish by the community.

Aplikacja WPF:

Praca z App.xaml

Plik App.xaml jest punktem startu twojej aplikacji. Visual Studio automatycznie generuje go oraz plik Code-behind App.xaml.cs podczas tworzenia przez ciebie nowego projektu WPF. Podobnie jak w przypadku klasy Window, te dwa pliki są klasami typu partial i pracując razem pozwalają ci na modyfikację zarówno poprzez znaczniki w pliku XAML, jak i kod w pliku backend.

App.xaml.cs rozszerza klase Application, która jest centralną klasą w aplikacjach WPF. .Net najpierw kieruje się do tej klasy, aby wykonać wszystkie instrukcje startowe, a następnie uruchamia właściwe dla twojego projektu okna. To tutaj można subskrybować ważne zdarzenia aplikacji jak start aplikacji, nieobsłużone wyjątki i inne. Więcej na ten temat w dalszych rozdziałach.

Jedną z najczęściej używanych funkcji pliku App.xaml.cs jest definiowanie zasobów globalnych, które będą mogły być wykorzystywane w całej aplikacji. Będzie to omówione szerzej w dalszych rozdziałach.

Struktura App.xaml

Podczas tworzenia nowej aplikacji, automatycznie wygenerowany plik App.xaml będzie wyglądał w następujący sposób:

<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>

Rzeczą, która rzuca się w oczy, jest właściwość StartupUri. Jest ona odpowiedzialna za wskazywanie jakie okno lub strona powinna być uruchomiona podczas startu aplikacji. W tym wypadku MainWindow.xaml będzie uruchomione, ale jeśli chcesz, możesz użyć innego okna jako punkt startowy, po prostu edytując tę właściwość.

W niektórych sytuacjach możesz chcieć posiadać większą kontrolę nad tym, jak i kiedy pierwsze okno jest wyświetlane. W takiej sytuacji możesz usunąć właściwość StartupUri razem z jej wartością i zapisać to w pliku źródłowym (Code-Behind). To będzie zademonstrowane poniżej.

Struktura App.xaml.cs

Odpowiadająca klasa App.xaml.cs będzie zazwyczaj wyglądała podobnie w nowym projekcie:

using System;
using System.Collections.Generic;
using System.Windows;

namespace WpfTutorialSamples
{
	public partial class App : Application
	{

	}
}

Zobaczysz jak ta klasa rozszerza klasę Application i pozwala nam na zrobienie zmian na poziomie aplikacji. Dla przykładu możesz subskrybować zdarzenie Startup, gdzie ręcznie zdefiniujesz okno, jakie pojawi się przy starcie aplikacji.

Tutaj przykład:

<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>

Zwróć uwagę jak właściwość StartupUri została zamieniona z subskrypcją zdarzenia Startup (Subskrypcja zdarzeń za pośrednictwem XAML jest wytłumaczona w innym rozdziale). W pliku źródłowym (Code-behind) możesz użyć zdarzenia w następujący sposób:

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();
		}
	}
}

Ciekawą rzeczą w tym przykładzie jest to, że w porównaniu do użycia po prostu właściwości StartupUri, jest to, że teraz możemy manipulować oknem programu, zanim będzie wyświetlone. W przykładzie zmieniliśmy tytuł okna, nie jest to bardzo użyteczne, ale możesz także subskrybować zdarzenia lub pokazać ekran powitalny. Kiedy masz pełną kontrolę, pojawia się wiele możliwości. Spojrzymy na niektóre z nich bliżej w kolejnych rozdziałach tego poradnika.