Ein neues Konzept zur automatischen Anordnung von Komponenten erlaubt eine flexiblere Reaktion auf Größenänderung eines Fensters, ohne dass Sie das selbst programmieren müssen.
20 Layoutcontainer
Windows-Forms-Anwendungen reagieren nur recht unflexibel auf Größenänderungen des Fensters. Entweder positionieren Sie Steuerelemente absolut, kleben sie an den Rändern fest oder lassen sie allen verfügbaren Platz einnehmen. Bereits einen Umbruch einer Zeile mit Buttons bei zu kleiner Fensterbreite müssen Sie selbst programmieren. All das können Sie auch in WPF realisieren. Aber WPF führt das Konzept von Layoutcontainern ein.
Der Entwurf von Benutzeroberflächen ändert sich durch Layoutcontainer fundamental. Sie kümmern sich nicht mehr um die Details einer optimalen Anordnung der Steuerelemente, sondern denken in abstrakteren Begriffen. In einer Tabelle können Sie zum Beispiel fordern, dass die dritte Spalte 20 % der Fensterbreite einnimmt. Wie das genau realisiert wird, überlassen Sie dem Layoutcontainer. Durch diesen Ansatz bleibt die relative Lage aller Steuerelemente bei Größenänderungen des Fensters erhalten – so erzeugen Sie dieselbe Oberfläche für Netbooks und für Großbildschirme.
Das WPF-Framework stellt uns einige unterschiedliche Container mit sehr verschiedenen Verhaltensweisen zur Verfügung. Sie können diese ineinander verschachteln, sodass Sie praktisch jede Designanforderung erfüllen können.
20.1 Containertypen 

Layoutcontainer organisieren die Anordnung der Steuerelemente. Es liegt nahe, sich der Thematik genauso organisiert zu nähern. Verschaffen wir uns mit Tabelle 20.1 erst einmal einen Überblick über die im WPF-Framework angebotenen Layoutcontainer. Den wichtigsten Containern widmen wir uns dann in den folgenden Abschnitten.
Layoutcontainer | Anordnung der Steuerelemente |
Canvas |
Position und Größe liegen fest. |
DockPanel |
Elemente können an den Rändern angedockt werden. |
Grid |
Elemente liegen im Raster einer (unsichtbaren) Tabelle. |
StackPanel |
Elemente sind vertikal oder horizontal angeordnet (gestapelt). |
TabPanel |
Elemente liegen auf Registerkarten mit Reitern. |
ToolBarOverflowPanel |
Ordnet die Elemente einer Toolbar an. |
UniformGrid |
Elemente liegen auf einem äquidistanten Raster. |
VirtualizingPanel |
Abstrakte Basisklasse, Anordnung durch Kindklasse. Elementerzeugung bzw. Vernichtung nach Bedarf (Sichtbarkeit). |
VirtualizingStackPanel |
VirtualizingPanel mit StackPanel-Anordnung |
WrapPanel |
Automatischer Zeilen- bzw. Spaltenumbruch für horizontale bzw. vertikale Anordnung |
Alle Layoutcontainer sind direkt oder indirekt von der Basisklasse Panel im Namensraum System.Windows.Controls abgeleitet, in der die gemeinsamen Eigenschaften und Methoden zu finden sind. Um die Orientierung nicht zu verlieren, beschränke ich mich in Tabelle 20.2 auf die wichtigsten Eigenschaften. Die komplette Liste finden Sie in der Dokumentation.
Eigenschaft | Beschreibung | |
Background |
Hintergrundfarbe des Containers |
|
Children |
Liste der Elemente im Container als UIElementCollection |
R |
Cursor |
Der angezeigte Cursor |
|
Focusable |
Gibt an, ob der Container fokussierbar ist. |
|
Height |
Höhe des Containers |
|
HorizontalAlignment |
Horizontale Ausrichtung im Container |
|
Margin |
Abstand des Containers zur übergeordneten Komponente |
|
MaxHeight, MaxWidth |
Maximale Höhe und Breite des Panels |
|
MinHeight, MinWidth |
Minimale Höhe und Breite des Panels |
|
VerticalAlignment |
Vertikale Ausrichtung im Container |
|
Width |
Breite des Containers |
Ihre Meinung
Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.