WPF-Basics: Namespaces

Bislang haben wir immer mit WPF-Projekten gearbeitet, ohne uns Gedanken um das Stammelement einer .xaml-Datei zu machen. Dieses Element, das in der Regel Window heißt, enthält zum Beispiel einige Namespace-Angaben und weitere Informationen. In diesem Artikel wollen wir erläutern, was es mit diesen Attributen auf sich hat und wie sich diese auf die Definition der vollständigen .xaml-Datei auswirken.

Window oder …

Wie schon erwähnt, ist das Stammelement einer .xaml-Datei meist ein Window-Element – also eines, das ein Fenster beschreibt. Es gibt allerdings noch einige andere Elementtypen, zum Beispiel das in diesem Magazin auch schon verwendete Page-Element, mit dem man eine Seite beschreibt, die innerhalb anderer Elemente eingebunden werden kann.

Wenn Sie eine neue WPF-Anwendung anlegen, erhalten Sie direkt ein Fenster mit dem Titel MainWindow, dass einige für den Einsteiger kryptisch anmutende Elemente enthält (siehe Listing 1).

<Window x:Class="Experimente.MainWindow"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
         xmlns:local="clr-namespace:Experimente"
         mc:Ignorable="d"
         Title="MainWindow" Height="350" Width="525">
     <Grid>
         
     </Grid>
</Window>

Listing 1: Namespaces eines Window-Elements

Das erste Attribut namens x:Class gibt an, welche Klasse die Code behind-Klasse der aktuellen .xaml-Datei ist. Der Teil vor dem Punkt gibt den Namespace an, der Teil hinter dem Punkt den Klassennamen.

Im entsprechenden Code-Modul finden Sie als oberstes Element das Namespace-Objekt namens Experimente, darunter die Klasse mit dem unter x:Class angegebenen Namen MainWindow. Der Doppelpunkt und die folgende Bezeichnung Window geben an, dass die Klasse MainWindow von der Klasse Window abgeleitet ist und somit alle Eigenschaften, Methoden und Ereignisse der Klasse Window besitzt. Die Methode public MainWindow ist die sogenannte Konstruktor-Methode, die automatisch beim Initialisieren der Klasse aufgerufen wird:

namespace Experimente {
     public partial class MainWindow : Window {
         public MainWindow() {
             InitializeComponent();
         }
     }
}

Beim Starten wird in der Datei App.xaml die unter Startup-Uri angegebene .xaml-Datei eingelesen, hier MainWindow.xaml, die dortige unter x:Class angegebene Code behind-Klasse gesucht und die Konstruktor-Methode aufgerufen. Diese wiederum ruft die Methode InitializeComponent auf, die grob zusammengefasst aus der in der .xaml-Datei enthaltenen Definition das entsprechende Objekt zusammenstellt, also beispielsweise ein Window-Element mit all seinen Steuerelementen.

Bislang haben wir immer mit WPF-Projekten gearbeitet, ohne uns Gedanken um das Stammelement einer .xaml-Datei zu machen. Dieses Element, das in der Regel Window heißt, enthält zum Beispiel einige Namespace-Angaben und weitere Informationen. In diesem Artikel wollen wir erläutern, was es mit diesen Attributen auf sich hat und wie sich diese auf die Definition der vollständigen .xaml-Datei auswirken.

Window oder …

Wie schon erwähnt, ist das Stammelement einer .xaml-Datei meist ein Window-Element – also eines, das ein Fenster beschreibt. Es gibt allerdings noch einige andere Elementtypen, zum Beispiel das in diesem Magazin auch schon verwendete Page-Element, mit dem man eine Seite beschreibt, die innerhalb anderer Elemente eingebunden werden kann.

Wenn Sie eine neue WPF-Anwendung anlegen, erhalten Sie direkt ein Fenster mit dem Titel MainWindow, dass einige für den Einsteiger kryptisch anmutende Elemente enthält (siehe Listing 1).

<Window x:Class="Experimente.MainWindow"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
         xmlns:local="clr-namespace:Experimente"
         mc:Ignorable="d"
         Title="MainWindow" Height="350" Width="525">
     <Grid>
         
     </Grid>
</Window>

Listing 1: Namespaces eines Window-Elements

Das erste Attribut namens x:Class gibt an, welche Klasse die Code behind-Klasse der aktuellen .xaml-Datei ist. Der Teil vor dem Punkt gibt den Namespace an, der Teil hinter dem Punkt den Klassennamen.

Im entsprechenden Code-Modul finden Sie als oberstes Element das Namespace-Objekt namens Experimente, darunter die Klasse mit dem unter x:Class angegebenen Namen MainWindow. Der Doppelpunkt und die folgende Bezeichnung Window geben an, dass die Klasse MainWindow von der Klasse Window abgeleitet ist und somit alle Eigenschaften, Methoden und Ereignisse der Klasse Window besitzt. Die Methode public MainWindow ist die sogenannte Konstruktor-Methode, die automatisch beim Initialisieren der Klasse aufgerufen wird:

namespace Experimente {
     public partial class MainWindow : Window {
         public MainWindow() {
             InitializeComponent();
         }
     }
}

Beim Starten wird in der Datei App.xaml die unter Startup-Uri angegebene .xaml-Datei eingelesen, hier MainWindow.xaml, die dortige unter x:Class angegebene Code behind-Klasse gesucht und die Konstruktor-Methode aufgerufen. Diese wiederum ruft die Methode InitializeComponent auf, die grob zusammengefasst aus der in der .xaml-Datei enthaltenen Definition das entsprechende Objekt zusammenstellt, also beispielsweise ein Window-Element mit all seinen Steuerelementen.

Access, SQL und Cloud Automation

Unser exklusives Angebot für Dich!

VB-Entwickler
12,50 € im Monat*

(Gilt für den Abschluss eines Jahres-Abonnements.)

Hier geht’s weiter →

Die ersten 4 Wochen kostenlos testen – voller Zugriff auf alle Artikel, vollständigen Code und Beispieldatenbanken. Kein Risiko: Wenn es nicht passt, kündigst Du einfach innerhalb der ersten vier Wochen.

PayPal VISA Mastercard SEPA
Kostenlos & unverbindlich

Oder hast Du eine konkrete Frage zu Deiner eigenen Access-Anwendung?

Vielleicht stellt Deine Anwendung Dich vor eine Herausforderung, zu der Du bisher keine Lösung findest. Schlechte Performance, kein ausreichender Zugriffsschutz, Du bist unsicher über Dein Datenmodell oder Dein Code liefert unerklärliche Fehler?

In unserem kostenlosen Access-Audit schaut sich André Minhorst persönlich gemeinsam mit Dir Deine Lösung per Zoom an – und zeigt Dir, wo Datenmodell, VBA-Code, Ergonomie und Sicherheit Optimierungspotenzial bieten.

Jetzt kostenloses Access-Audit anfordern →