TOC

This article has been localized into German by the community.

A special thanks goes out to user #75 for the German translation of this article: kai-friebe.site

Eine WPF-Applikation:

Verwendung der App.xaml

Die App.xml ist der deklarative Ausgangspunkt der Anwendung. Visual Studio erzeugt die Datei automatisch, wenn du ein Projekt in WPF anlegst, inklusive der Code-behind Datei App.xaml.cs. Die beiden Dateien sind zwei Teilklassen (partial class), mit denen du sowohl in der Auszeichnungssprache XAML, als auch im Code dahinter(Code-behind) arbeiten kannst.

Die App.xaml.cs Datei erweitert die Anwendungsklasse, welche eine zentrale Klasse der WPF Windows Anwendung ist. Von dort aus gibt .NET Anweisungen an und startet das Fenster (Window) oder eine Seite (Page). Hier werden auch wichtige Ereignisse der Anwendung registriert, wie z. B. der Anwendungsstart, unbehandelte Ausnahmen (unhandled exceptions) etc. Mehr darüber später.

Eine der häufigsten verwendeten Funktionen der App.xaml ist es, globale Ressourcen zu definieren, die für die gesamte Anwendung zugänglich gemacht werden. Z. B. Farben, Schrift etc. Ausführliche Details folgen später.

Aufbau der App.xaml

Beim Erzeugen einer neuen Anwendung wird die App.xaml automatisch angelegt und hat folgenden Aufbau:

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

Ein wichtiger Punkt ist die Eigenschaft: StartupUri. Hier wird festgelegt, mit welchem Fenster (Window) oder Seite (Page) die Anwendung startet. In unserem Fall ist es das Fenster MainWindow.xaml, mit der die Anwendung startet. Du kannst jederzeit die Eigenschaft ändern, um von einem anderen Fenster oder einer anderen Seite zu starten.

In manchen Situationen bedarf es mehr Kontrolle über das Fenster wie und wann es angezeigt werden soll. Entferne dafür die Eigenschaft StartupUri inklusive Wert und schreibe es im Code der App.xaml.cs. Weitere Informationen findest du weiter unten.

Aufbau der App.xaml.cs

Die App.xaml.cs sieht in einem neuen Projekt üblicherweise so aus:

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

namespace WpfTutorialSamples
{
	public partial class App : Application
	{

	}
}

Hier siehst du, wie die Klasse App die Klasse Application erweitert. Dies geschieht durch ein Doppelpunkt (App : Application). Dadurch erbt die Klasse App von Application unter anderem deren Methoden. Z. B. die Startup Methode, in der du selbst ein Fenster erzeugen kannst.

Beispiel:

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

In der App.xaml wurde die Eigenschaft StartupUri durch die Eigenschaft Startup mit dem Wert, bzw. den Namen der Methode ersetzt. Wie Ereignisse durch XAML registriert werden, wird in einem späteren Kapitel erklärt. In der App.xaml.cs Datei kannst du das Ereignis wie folgt nutzen:

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

Das Schöne an diesem Beispiel ist, dass im Vergleich zu der StartupUri Eigenschaft, wir das Fenster bevor es erscheint in der Application_Startup Methode manipulieren können. So können wir den Titel ändern, was aber kaum einen Einfluss hat. Jedoch lassen sich so Ereignisse registrieren, wie z. B. ein Splash Screen. Durch diese Methode entstehen viele Möglichkeiten. Diese werden wir in den nächsten Artikeln genauer beleuchten.