Steuerelemente und Panels in WPF

Standard

Layouting in WPF ist viel flexibler und mächtiger als in Windows Forms, aber auch viel komplexer. In Windows Forms gibt es Anchoring und Docking, um das Verhalten der Steuerelemente bei Änderung der Fenstergröße zu steuern. In WPF beeinflussen viele Faktoren die Anordnung der Steuerelemente, einer davon sind die Panel-Elemente.

In der MSDN-Library findet sich eine Beschreibung des WPF-Layoutsystems. Die wichtigsten Panel-Elemente sind:

Canvas Definiert einen Bereich, in dem Elemente explizit mit Koordinaten
relativ zu diesem Bereich positioniert werden.
StackPanel Die Elemente werden entweder horizontal oder vertikal in einer Linie
angeordnet.
DockPanel Die Elemente werden an den Rändern positioniert oder füllen den inneren Restbereich.
WrapPanel Die Elemente werden sequentiell von links nach rechts angeordnet und in
die nächste Zeile umgebrochen, wenn am Ende einer Zeile kein Platz mehr
ist.
Grid Definiert einen flexiblen Gitterbereich, der aus Spalten und Zeilen
besteht.

Mehr Informationen über die verschiedenen Panel-Elemente gibt es im Artikel Panel Overview.

Nicht nur die richtige Auswahl des Panel-Elements beeinflusst das Layout, einige Steuerelement-Eigenschaften haben ebenfalls Auswirkungen auf die Anordnung der Steuerelemente. Die wichtigsten Eigenschaften mit Einfluss auf das Layout sind:

HorizontalAlignment Definiert, wie das Element horizontal innerhalb des Parent-Elements
positioniert werden soll. Für diese Eigenschaft gibt es vier mögliche
Werte: *Left*, *Center*, *Right*, *Stretch*.
VerticalAlignment Definiert, wie das Element vertikal innerhalb des Parent-Elements
positioniert werden soll. Für diese Eigenschaft gibt es vier mögliche
Werte: *Top*, *Center*, *Bottom*, *Stretch*.
Margin Definiert den Abstand zwischen dem Element und dem Elternelement oder
den Geschwisterelementen.
Padding Definiert den Abstand zwischen dem Rand eines Steuerelements und seinen
Kindelementen.

Detailliertere Informationen über den Bedeutung dieser Eigenschaften gibt es in der MSDN-Library.

Nicht jede Eigenschaft ist in jedem Panel sinnvoll. Folgende Tabelle zeigt die Wirkung bestimmter Kombinationen von Eigenschaften und Panel-Elementen:

Canvas Margin Teilweise: An den zwei Seiten, die für die Positionierung relevant sind,
werden die entsprechenden Elemente des Margin-Werts hinzuaddiert.
HorizontalAlignment Nein
VerticalAlignment Nein
StackPanel Margin Ja
HorizontalAlignment Teilweise: Nur, wenn Orientation Vertical ist.
VerticalAlignment Teilweise: Nur, wenn Orientation Horizontal ist.
DockPanel Margin Ja
HorizontalAlignment Teilweise: Wenn Dock den Wert Left oder Right hat, ist diese Eigenschaft
sinnlos.
VerticalAlignment Teilweise: Wenn Dock den Wert Top oder Bottom hat, ist diese Eigenschaft
sinnlos.
WrapPanel Margin Ja
HorizontalAlignment Teilweise: Wenn Orientation Vertical ist oder ItemWidth genug Extraraum
lässt.
VerticalAlignment Teilweise: Wenn Orientation Horizontal ist oder ItemHeight genug
Extraraum lässt.
Grid Margin Ja
HorizontalAlignment Ja
VerticalAlignment Ja

Welche Vorteile hat der WPF-Layoutmechanismus, der im Vergleich zu Windows Forms viel komplexer ist?

  1. Der Entwickler kann besser kontrollieren, wie sich die Anordnung der Steuerelemente verhalten soll, wenn der Benutzer die Größe des Fensters ändert. Das konnte aber bereits in Windows Forms mit dem Anchoring oder dem Docking erreicht werden.
  2. Die Steuerelemente können ihre Größe und Position automatisch anpassen, wenn bei einer lokalisierten Anwendung die Texte der Übersetzungen länger sind. Darüber gibt es wieder einen Artikel in der MSDN-Library.

Es gibt weitere Panel-Elemente, die ich in diesem Artikel nicht berücksichtigt habe. Diese sind zum größten Teil nur für die Entwicklung eigener Steuerelemente relevant. Außerdem können eigene Panel-Elemente entwickelt werden, wenn die Vorgefertigten nicht ausreichen.

Leave a Reply

Your email address will not be published. Required fields are marked *