Site logo
Site logo
Programmieren aus Leidenschaft
Programmieren aus Leidenschaft

Windows Presentation Foundation - Hallo Welt


Mit der WPF lassen sich sowohl eigenständige Programme, als auch XAML Browser Application erstellen. Die zuletzt genannten werden im Browserfenster (bevorzugt im Internet Explorer) ausgeführt. Im eigentlichen XAML-Inhalt unterscheiden sich die beiden Möglichkeiten nur wenig. Für eine Browser Application wird eine Page und für eine Programm ein Window definiert.
<Page x:Class="XAMLBrowserApplication1.Page1"
xmlns="
http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="
http://schemas.microsoft.com/winfx/2006/xaml"
Title="Page1" Height="300" Width="300">
</Page>

<Window x:Class="Application1.Window1"
xmlns="
http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="
http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300">
</Window>
Auffällig bei beiden Varianten sind die Schema-Definitionen, die man sehr leicht für eine URL halten könnte. Diese Adressen in einen Browser einzugeben hat aber wenig Sinn, denn es gibt dort keine aufrufbaren Seiten. In Wirklichkeit sind dies Namespace-Verweise.

Nachdem nun das Grundgerüst steht, ist jetzt der Zeitpunkt, das Fenster mit etwas mehr Leben zu füllen. Für den Anfang soll ein einfacher Text, also ein Label genügen. Der XAML-Code sollte also etwas so aussehen:
<Window x:Class="ContentTest.Window1"
xmlns="
http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="
http://schemas.microsoft.com/winfx/2006/xaml"
Title="ContentTest" Height="300" Width="300">
<Label>Hallo Welt</Label>
</Window>
Durch eine neue Zeile ist dieses Label Objekt deklariert. Zur Laufzeit des Programms wird aus jeder XAML Deklaration ein .NET Objekt instanziert. Es macht also keinen Unterschied, ob man Objekte durch C#- oder XAML-Code erzeugt. Es ist auch möglich, eine WPF-Anwendung komplett ohne XAML-Code zu erstellen. Dies ist nicht unbedingt sinnvoll, denn der große Vorteil ist ja eben die deklarative Programmierung durch XAML.

Durch zusätzliche Eigenschaften kann man das Erscheinungsbild des Label Objektes noch weiter verändern. Auch dies ist natürlich im XAML Code möglich.
<Label Margin="10" Background="Blue">Hallo Welt</Label>
Auch diese Attribute/Eigenschaftensdefinitionen erinnern sehr an XML oder HTML, denn das Prinzip ist tatsächlich das Gleiche.

Versuchen Sie nun auf die gezeigte Art ein weiteres Label hinzuzufügen. Obwohl es nach einer ganz einfachen Aufgabe klingt wird es Ihnen nicht gelingen ein funktionsfähiges Programm zu erzeugen. Offensichtlich verträgt das Fenster nicht mehr als ein Steuerelement. Warum dies so ist und Sie es dennoch schaffen mehrere Steuerelemente zu verwenden, erfahren Sie im nächsten Abschnitt : Die Sache mit dem Content.