## 18.2 Layoutcontainer In einer auf WinForms basierenden Windows-Anwendung dürfen Sie ganz unbekümmert und nach Belieben die Steuerelemente anordnen. In einer WPF-Anwendung geht das nicht so einfach. Hier übernehmen Layoutcontainer die Anordnung und Darstellung der enthaltenen Steuerelemente. Die Folge ist, dass sich die Anordnung nicht mehr an der Angabe der Absolutkoordinaten orientiert, sondern am Aufbau des Fensters. Die Anwendung skaliert automatisch, wenn der Benutzer Einstellungen ändert oder die Größe des Fensters ändert. Die Idee, die hinter den Layoutcontainern steckt, ist, eine Komponente einer bestimmte Position im Fenster zuzuordnen. Das hat den Vorteil, dass die Komponente immer an der gleichen Stelle angezeigt wird und die relative Lage zu allen anderen Komponenten erhalten bleibt. Um das gewünschte Layout zu erzielen, werden von der WPF mehrere unterschiedliche Container bereitgestellt, die sich in ihrer Charakteristik unterscheiden und sich zudem ineinander verschachteln lassen. Es sei bereits an dieser Stelle angemerkt, dass mit Canvas ein Container bereitgestellt wird, der nicht die beschriebenen Verhaltensweisen zeigt und stattdessen mit absoluten Positionsangaben arbeitet. Auch wenn es möglicherweise sehr verlockend erscheint, sollten Sie diesen Container dennoch nicht einsetzen, um die angebotenen Vorzüge der anderen WPF-Layoutcontainer zu nutzen. An dieser Stelle sollten wir uns zuerst einen Überblick über die von WPF angebotenen Layoutcontainer verschaffen. Anschließend werden wir uns die Container detailliert ansehen.

Tabelle 18.5 Layoutcontainer im Überblick

Layoutcontainer | Kurzbeschreibung
Canvas | Die Steuerelemente werden an einer angegebenen Position in einer festgelegten Größe angezeigt.
DockPanel | Die Steuerelemente können an den Rändern angedockt werden.
Grid | Dieser Container stellt eine tabellenartige Struktur zur Verfügung, in deren Zellen die einzelnen Controls positioniert werden können.
StackPanel | Die Steuerelemente werden vertikal oder horizontal angeordnet (gestapelt).
UniformGrid | Dieser Container stellt ein Raster aus gleich großen Zellen dar.
WrapPanel | Mit diesem Container werden die Controls vertikal oder horizontal angeordnet. Falls die Breite oder die Höhe nicht ausreicht, werden die enthaltenen Steuerelemente in die nächste Zeile umbrochen.
Anmerkung
Auf der Buch-DVD finden Sie unter Kapitel 18 die Projektmappe Layoutcontainer, in der zu jedem der hier behandelten Layoutcontainer ein Beispielprojekt enthalten ist. Die einzelnen Projekte sollen Ihnen eine Testgrundlage zum Layoutcontainer bieten.
### 18.2.1 Gemeinsame Eigenschaften der Layoutcontainer Alle Layoutcontainer sind direkt oder indirekt auf eine gemeinsame Basisklasse zurückzuführen: die Klasse Panel. Damit ist klar, dass alle gemeinsamen Eigenschaften und Methoden in Panel zu finden sind. Um an dieser Stelle alle Eigenschaften und Methoden aufzuführen, ist die Liste zu lang. Stattdessen möchte ich Ihnen einen kleinen Überblick verschaffen, damit Sie eine erste Orientierung finden. Bei Bedarf informieren Sie sich bitte in der Dokumentation.

Tabelle 18.6 Eigenschaften der Klasse »Panel« (Auszug)

Eigenschaft | Beschreibung
Background | Hintergrundfarbe des Containers
Children | Liefert die Referenz auf eine Collection (UIElementCollection) von den Komponenten, die sich im Container befinden.
Cursor | Legt den angezeigten Cursor fest.
Focusable | Legt fest, ob der Container fokussierbar ist.
Height | Höhe des Containers
HorizontalAlignment | Beschreibt die horizontale Ausrichtung im Container.
Margin | Legt den Abstand des Containers zu seiner übergeordneten Komponente fest.
MaxHeight | Legt die maximale Höhe des Panels fest.
MaxWidth | Legt die maximale Breite des Panels fest.
MinHeight | Legt die minimale Höhe des Panels fest.
MinWidth | Legt die minimale Breite des Panels fest.
VerticalAlignment | Beschreibt die vertikale Ausrichtung im Container.
Width | Breite des Containers