TOC

This article has been localized into German by the community.

Eine WPF-Applikation:

Das Fenster

Immer wenn man eine WPF-Applikation erzeugt, ist die erste Sache die man antreffen wird die Window-Klasse. Sie fungiert als Basis eines Fensters und stattet die Applikation mit einem Standardrahmen, einer Titelzeile, sowie Maximierungs-, Minimierungs-, und Schliessknöpfen aus. Ein WPF-Fenster ist eine Kombination aus einer XAML-Datei (.xaml), in der das Windowelement die Basis ist, und einer CodeBehind-Datei (.cs). Falls du Visual Studio (Express) verwendest, und eine neue WPF-Applikation erzeugst, wird es ein Standardfenster erstellen, das in etwa so aussieht:

<Window x:Class="WpfApplication1.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">
    <Grid>

    </Grid>
</Window>

Das x:class Attribut in der XAML-Datei beschreibt welche Klasse verwendet werden soll, in diesem Fall Window1, die uns von Visual Studio ebenfalls bereits erzeugt wurde. Man kann sie im Projektexplorer in VS als Kindknoten der XAML-Datei finden. Standardmässig sieht sie ungefähr so aus:

using System;
using System.Windows;
using System.Windows.Controls;
//…more using statements

namespace WpfApplication1
{
    /// <summary>
    /// Interaction logic for Window1.xaml
    /// </summary>
    public partial class Window1 : Window
    {
        public Window1()
        {
            InitializeComponent();
        }
    }
}

Wie du sehen kannst ist die Window1-Klasse als partial definiert, weil sie zur Laufzeit mit der XAML-Datei kombiniert wird, um das vollständige Fenster zu erzeugen. Eigentlich ist es das, was der Aufruf von InitializeComponent() tut, deshalb ist er notwendig, um ein voll funktionsfähiges Fenster zu erzeugen.

Wenn wir zur XAML-Datei zurückgehen, wirst du ein paar andere interessante Attribute des Windowelements entdecken, z.B Title, welches den Titel des Fenster (angezeigt in der Titelleiste) definiert, wie auch die Starthöhe und -breite. Es gibt auch einige namespace-Definitionen, über die wir in den XAML-Kapiteln sprechen werden.

Du wirst auch bemerken, dass Visual Studio bereits ein Grid-Control innerhalb des Windowelements generiert hat. Grid ist eines der WPF-Panel, und obwohl hier jedes beliebige Panel oder Control gesetzt werden könnte, kann das Fenster nur EIN Control enthalten, weshalb es meistens eine gute Wahl ist, ein Panel zu verwenden, das mehrere Kind-Controls enthalten kann. Später in diesem Tutorial werden wir einen wesentlich tieferen Blick auf die verschiedenen Panels werfen, die man verwenden kann, da sie sehr wichtig in WPF sind.

Wichtige Fenstereigenschaften

Die WPF Window-Klasse hat eine Menge interessanter Attribute, die man setzen kann, um das Aussehen und Verhalten des Applikationsfensters zu kontrollieren. Hier ist eine kurze Auflistung der Wichtigsten:

Icon - Erlaubt es ein Icon zu definieren, das normalerweise in der oberen linken Ecke des Fensters angezeigt wird, direkt vor dem Titel.

ResizeMode - Dieses Attribut sagt aus, ob und wie der Endnutzer das Fenster vergrössern kann. Standardmässig ist CanResize aktiv, was es dem Nutzer erlaubt, das Fenster wie jedes andere Fenster zu vergrössern und zu verkleinern, entweder durch die Maximierungs-/Minimierungsknöpfe, oder mittels Drag'n'Drop an den Ecken oder Seiten des Fensters. CanMinimize erlaubt es, das Fenster zu minimieren, aber nicht es zu maximierien oder kleiner und grösser zu ziehen. NoResize ist der strikteste Modus, bei dem der Maximierungsknopf wie auch der Minimierungsknopf ganz verschwindet, und das Fenster nicht grösser und kleiner gezogen werden kann.

ShowInTaskbar - Standardmässig true, aber wenn es auf false gesetzt wird, wird das Fenster nicht in der Windows-Taskbar angezeigt. Praktisch für Subfenster oder für Fenster, die beim Minimieren nicht mehr gesehen werden sollen, aber noch aktiv sind.

SizeToContent - Entscheidet ob sich das Fenster automatisch auf die Grösse seines Inhalts anpassen soll. Standardmässig ist Manual gesetzt, was bedeutet, dass das Fenster sich nicht automatisch vergrössert. Die anderen Optionen sind Width, Height und WidthAndHeight, und jede von Ihnen wird die Fenstergrösse Horizontal, Vertikal oder in beide Richtungen anpassen.

Topmost - Der Standard ist false, aber wenn es auf true gesetzt wird, wird das Fenster immer über anderen Fenstern bleiben, ausser wenn es minimiert wird. Nur nützlich für sehr spezielle Situationen.

WindowStartupLocation - Kontrolliert die Initialposition des Fensters. Standardmässig Manual, was bedeutet, dass das Window nach den Top- und Lefteigenschaften positioniert wird. Andere Möglichkeiten sind CenterOwner, die das Fenster über dem Parentfenster zentriert, oder CenterScreen, die das Fenster auf dem Bildschirm zentriert.

WindowState - Setzt den Fensterstatus beim Starten. WindowState kann auf Normal, Maximized oder Minimized gesetzt werden. Der Standard ist Normal, welches man immer verwenden sollte, ausser man möchte das Fenster Maximiert oder Minimiert starten.

Es gibt viele andere Attribute, deshalb suche selbst nach weiteren, und gehe dann weiter zum nächsten Kapitel.