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!

War es hilfreich?

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>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top