WPF StackPanel

WPF StackPanel
WPF StackPanel

WPF StackPanel

Du möchtest mit dem WPF StackPanel lernen, wie Du Steuerelemente horizontal und auch vertikal gestapelt ausrichten kannst?

Dann starte mit meinem diesmaligen Beitrag über das WPF StackPanel durch und lerne mehr über dessen Verwendung in XAML.

Falls Du Dich für andere designrelevante Themen interessierst, kannst Du später ggf. in diesen anderen Beiträge reinschauen: Mahapps Metro, Mahapps Metro Projekt aufsetzen.

Controls stapeln – Wie es früher ging

Selbst kenne ich das zu gut, dass ich natürlich auch mal einige Steuerelemente horizontal oder auch vertikal stapeln wollte.

Verschiedene Sachen hat man dafür mehr oder weniger erfolgreich ausprobiert, denn unter Windows Forms kennt man Probleme mit Flackern und Performance zu gut..

Zu den aktiveren WinForms-Zeiten habe ich das eigentlich immer mit 2 Controls gelöst.

FlowLayoutPanel

Das FlowLayoutPanel kann laut Dokumentation und Erfahrung seinen Inhalt – bestehend aus einem oder mehreren Controls – fließend anordnen.

Das bedeutet, dass die darin befindlichen Steuerelemente in fließender Form nebeneinander, oder übereinander angeordnet werden können.

Wenn zwei Buttons beispielsweise nebeneinander nicht genug Platz haben, dann wird der eine Button in die nächste „Zeile„, bzw. „Spalte“ umgebrochen.

Das Gegenbeispiel mit dem normalen Panel

Neben dem Fakt, dass man die Controls in einem Panel mehr oder weniger manuell anordnet, würde es bei der Überschreitung der Größe so aussehen:

WinForms Panel Button overflow Beispiel
WinForms Panel Button overflow Beispiel

Klar, das Panel hat irgendwo einen anderen Zweck, also eher die Controls frei anzuordnen und eventuell mit der Anchor-Eigenschaft ein wenig zu tunen..

Es dient hier auch mehr oder weniger nur der Darstellung und des Verständnisses.

Nun das richtige Beispiel mit dem FlowLayoutPanel

Schauen wir uns nun das Beispiel mit dem FlowLayoutPanel selbst an, wie Dieses reagieren, bzw. anordnen würde.

Auch hier sind die beiden Buttons zu groß dafür, gleichzeitig innerhalb der Panel-Fläche dargestellt zu werden, daher fließt der „Button2“ in die nächste Zeile„.

FlowLayoutPanel Buttons untereinander stapeln
FlowLayoutPanel Buttons untereinander stapeln

TableLayoutPanel

Die nächste Möglichkeit wäre ein TableLayoutPanel zu verwenden, um Elemente gestapelt darzustellen.

Dazu habe ich das Control auf die Form gezogen und anschließend 3 Reihen eingestellt.

Wir benötigen hier nur 1 Spalte, daher habe ich das dementsprechend auch in den Einstellungen „Columns“, bzw. „ColumnCount“ angepasst.

Reihen konfigurieren

Das kannst Du entweder über die „RowCount„-Eigenschaft, oder über die „Rows“-Eigenschaft lösen.

TableLayoutPanel Buttons stapeln
TableLayoutPanel Buttons stapeln

In der „Rows„-Eigenschaft selbst definieren wir dann die Größen der jeweiligen Reihe.

Für dieses Beispiel habe ich den Größentyp der Reihen auf „AutoSize“ gestellt, damit die Größe sich dem Inhalt anpasst.

Hinweis

Achte darauf, die Buttons erst in die Reihen steckst und anschließend die Reihen auf AutoSize stellst, sonst verschwinden die Reihen einfach.

Die Moderne Variante – WPF StackPanel

Kommen wir nun zu der „Up-To-Date“-Variante mit der Windows Presentation Foundation in Kombination eines StackPanel-Controls.

Erstelle dazu wie vermutlich gewohnt ein neues VB.NET, oder C# WPFProjekt (.NET Framework) und begib Dich in die Standardansicht des Fensters.

Danach kannst Du ein StackPanel via Code oder via Drag & Drop aus der Toolbox, in das Fenster einfügen:

WPF StackPanel einfügen

WPF StackPanel Buttons gestapelt darstellen
WPF StackPanel Buttons gestapelt darstellen
<StackPanel>
    <Button>Button 1</Button>
    <Button>Button 2</Button>
    <Button Content="Button 3" />
</StackPanel>

Ich habe hier auch direkt schon 3 Buttons eingefügt, damit etwas dargestellt wird und das Fenster nicht so leer aussieht.

Diese Buttons habe ich unterschiedlich mit Inhalt versehen, um klar zu machen, dass es diese Möglichkeit gibt.

Ohne Inhalt würden wir praktisch gar nicht merken, dass sich das StackPanel überhaupt dort befindet.

Größe des StackPanels

Das StackPanel füllt hier automatisch den verfügbaren Platz und ordnet die Steuerelemente darin auch dementsprechend an.

Wir können feststellen, dass die einzelnen Buttons die volle Breite des Fensters füllen, weil wir die Größe nicht explizit festgelegt haben.

Ebenso können wir sehen, dass die Buttons die Höhe der einzelnen „Reihen“ des StackPanels automatisch bestimmen.

Vertikal oder horizontal – Panel-Ausrichtung ändern

Mit dem StackPanel haben wir auch die Möglichkeit, die Ausrichtung mit einfachen Schritten zu verändern.

Dazu sehen wir uns die „Orientation„-Eigenschaft an, Welche wie schon fast zu erwarten die Einstellungen „Vertical“ und „Horizontal unterstützt.

Folgendes Bild zeigt, wie die Ausrichtung bei der Einstellung „Horizontal“ verhält, Standardwert ist übrigens wie schon gesehen „Vertical„.

WPF StackPanel Buttons horizontal gestapelt darstellen
WPF StackPanel Buttons horizontal gestapelt darstellen

Auch hier füllt das Panel dementsprechend den verfügbaren Platz und richtet die Elemente analog dazu aus.

Elemente im Panel ausrichten

Nun könnte es auch für uns interessant sein, die Elemente im Panel selbst auszurichten, bzw. anzuordnen.

Dazu können wir die „VerticalAlignment„-, bzw. „HorizontalAlignment„-Eigenschaften der darin befindlichen Buttons verwenden.

Mit diesen Eigenschaften können wir den einzelnen Elementen sagen, dass Sie sich z. B. oben, mittig, oder vielleicht auch gestreckt ausrichten sollen:

Buttons im StackPanel ausrichten
Buttons im StackPanel ausrichten

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert