Ich versuche, ein Listview zu bekommen Elemente mit dem gleichen Objekt in der gleichen Zeile angezeigt werden, so dass ein Listview Items
gebunden (oder eine gruppierte Version davon), wie folgt definiert:Vertikal Listview mit horizontalen Gruppen
class Thing {
public Thing(int num) { Num = num; }
public int Num { get; set; }
}
List<Thing> Items = new List<Thing> {
new Thing(1), new Thing(2), new Thing(4),
new Thing(5), new Thing(3), new Thing(4),
new Thing(6), new Thing(4), new Thing(6),
new Thing(3)
};
würde wie folgt aussehen:
(die Felder auf der gleichen Reihe sollen die gleiche Größe sein)
Ich habe versucht, den ListView an eine CollectionViewSource zu binden, die an Items.GroupBy(x => x.Num)
gebunden war, aber ich konnte nicht die ListView die Gruppen vertikal stapeln und horizontale Stapel innerhalb der Gruppe verwenden.
Ich habe auch versucht, einen Ansatz mit verschachtelten Listviews, im Grunde wie folgt:
<ListView ItemsSource="{x:Bind ItemsGrouped}">
<ListView.ItemTemplate>
<DataTemplate x:DataType="local:ThingGroup>
<ListView ItemsSource="{x:Bind Items}">
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<ItemsStackPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</ListView.ItemsPanel>
</ListView>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
Es ist wirklich falsch gefühlt, und ich konnte immer noch nicht die Einzelteile erhalten die volle zur Verfügung stehende Breite zu strecken, so dass ich würde gerne einen Ansatz mit dem einzelnen ListView und Gruppen finden.
Danke! Das AdaptiveGridView ist wirklich cool –