Ändern, wie Elemente werden WPF-Listenfeld angezeigt
-
20-09-2019 - |
Frage
Ich habe ein WPF-Fenster, das einen ListBox
anzeigt. Ich habe die ListBox
Stück Vorlage geändert, so dass das Listenfeld zeigt rechteckige Elemente, die ausgewählt werden können.
Nun möchte Ich mag den ListBox
des ItemsPanelTemplate
so modifizieren, dass die Elemente in einem Raster statt entweder eine vertikalen oder horizontalen Liste angezeigt werden. Insbesondere mag ich das erste Element wie in der oberen rechten Ecke des ListBox
zu gehen und dann zweiten Punkt darunter und dritter unter, dass, bis die Höhe des nächsten Elements würde die Spalte der Elemente größer ist als die Höhe des ListBox
selbst machen. An diesem Punkt sollte es eine zweite Spalte direkt rechts von dem ersten Elemente hinzugefügt starten. Wenn die Gesamtbreite aller Spalten kombiniert größer war als die Breite des ListBox
dann eine horizontale Bildlaufleiste angezeigt werden soll.
Gibt es eine Möglichkeit, um diesen Effekt nur erhalten, indem Sie die ItemsPanelTemplate
ändern oder muss ich selbst die ListBox
Klasse erweitern? In jedem Fall, wie würde ich bekomme davon?
Vielen Dank für Ihre Hilfe!
Lösung
Ich habe nicht getestet, aber ich vermute, dass Sie den gewünschten Effekt durch Auslagern des Standard-Panel erhalten durch die ListBox
zu einem WrapPanel
verwendet:
<ListBox>
<ListBox.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Orientation="Vertical"/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
</ListBox>