Laden...

Wieso kann Grid nicht als ItemsPanel verwendet werden?

Erstellt von wackelkontakt vor 12 Jahren Letzter Beitrag vor 12 Jahren 2.124 Views
wackelkontakt Themenstarter:in
109 Beiträge seit 2011
vor 12 Jahren
Wieso kann Grid nicht als ItemsPanel verwendet werden?

Hallo,

ich würde gern ein Grid als ItemsPanel verwenden. Jedoch geht das schief. Hier ein beispielhafter Aufbau (Das Beispiel macht vielleicht nicht viel Sinn aber ich wollte die Sache einnfach halten. ):

<ListView 
                ItemsSource ="{Binding Path=Cells}" >
                <ListView.ItemTemplate>
                    <DataTemplate>
                        <Button Content="{Binding Cell.VisuName}" 
                                Grid.Column="{Binding Cell.PositionX}"
                                Grid.Row="{Binding Cell.PositionY}"/>
                    </DataTemplate>
                </ListView.ItemTemplate>
                <ListView.ItemsPanel>
                    <ItemsPanelTemplate>
                        <Grid>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition/>
                                <ColumnDefinition/>
                                <ColumnDefinition/>
                                <ColumnDefinition/>
                                <ColumnDefinition/>
                            </Grid.ColumnDefinitions>
                            <Grid.RowDefinitions>
                                <RowDefinition/>
                                <RowDefinition/>
                                <RowDefinition/>
                                <RowDefinition/>
                                <RowDefinition/>
                            </Grid.RowDefinitions>
                        </Grid>
                    </ItemsPanelTemplate>
                </ListView.ItemsPanel>
            </ListView>

Es werden nun aber keine Columns und Rows angelegt, sondern die Items werden in einem 1x1-Grid übereinander gestapelt. Verwende ich ein UniformGrid (natürlich ohne Zuweisung der Position) funktioniert alles wie es soll.

Kann mir jemand erklären warum das mit einem Grid schief geht?

Um Rekursion zu verstehen, muss man erst mal Rekursion verstehen, muss man erst mal Rekursion verstehen, ....

5.742 Beiträge seit 2007
vor 12 Jahren

Hallo wackelkontakt,

versuche mal den ItemsContainerStyle, um die Position der Elemente zu setzen.

wackelkontakt Themenstarter:in
109 Beiträge seit 2011
vor 12 Jahren

Hallo winSharp,

super Sache, funktioniert so wie es soll 👍

Danke!

Mal so nebenbei: Dieser Blogeintrag: A simpler (and dynamic) Grid control for WPF und der Tip mit dem ItemContainerStyle sind die Lösung für ein früheres Thema Positionierung von Elementen innerhalb von UniformGrid -> wie? bei dem du mir schon mal helfen wolltest, ich aber aufgrund von Zeit- und Wissensproblemen aber erst mal zur Seite geschoben habe. Da aber das Sortieren der Liste (als Übergangslösung) extrem lange dauert, bin ich das Thema noch mal angegangen. Mit der jetzigen Lösung bin ich erst mal ganz zufrieden, bin mal auf die Performance gespannt.

Um Rekursion zu verstehen, muss man erst mal Rekursion verstehen, muss man erst mal Rekursion verstehen, ....

5.742 Beiträge seit 2007
vor 12 Jahren

sind die Lösung für ein früheres Thema
>
bei dem du mir schon mal helfen wolltest

Siehe auch die Ergänzung in dem entsprechenden Thread.