2009-08-18 6 views
0

Ich habe eine beobachtbare Sammlung von Elementen, wobei jedes Element einen Namen und einen "Gruppennamen" (beide Strings) hat.Tricky WPF Styling-Problem - können Sie es tun?

Der schwierige Teil ist, in XAML, muss ich diese Sammlung so stylen, dass alle Elemente mit dem gleichen Gruppennamen nebeneinander aufgeführt sind, und der Gruppenname wird an der Spitze angezeigt.

Ich habe Benutzersteuerelemente für das Layout des Gruppennamens sowie das Layout jedes angezeigten Elements entwickelt. Ich habe mit ItemsControl herumgespielt, aber ich habe keine Ahnung, wie man es stylt, so dass Elemente mit derselben Gruppe irgendwie in dasselbe ItemsControl "verschmolzen" werden, das das generische ItemControl-Benutzersteuerelement als Quelle verwendet, wobei der Gruppenname oben angezeigt wird.

Ich hatte dies funktioniert mit einer Sammlung von "Gruppen", mit einer Sammlung von Elementen innerhalb jeder Gruppe, weil die Bindungen perfekt funktionieren. Ich habe jedoch nicht berücksichtigt, dass jeder Gegenstand in mehr als einer Gruppe sein kann (man denke an eine Person, die sich in einer "Arbeitsfreunde" - und "Kollegen" -Gruppe befindet, also muss sie doppelt angelegt sein).

Ratschläge oder Lösungen werden sehr geschätzt :)

Antwort

1

zunächst eine CollectionViewSource verwenden, um die Elemente zu sortieren:

<CollectionViewSource x:Key="SortedItems" Source="{Binding YourUnsortedItems}"> 
    <CollectionViewSource.SortDescriptions> 
     <scm:SortDescription PropertyName="GroupName"/> 
    </CollectionViewSource.SortDescriptions> 
</CollectionViewSource> 

Dann von Ihrem ItemsControl daran binden (oder was auch immer):

<ItemsControl Source="{Binding Source={StaticResource SortedItems}}"> 
    <ItemsControl.ItemTemplate> 
     <DataTemplate> 
      <!-- stick your template for each item here --> 
     </DataTemplate> 
    </ItemsControl.ItemTemplate> 
</ItemsControl> 
+0

Überprüfen Sie http://www.beacosta.com/blog/?p=17 für ein gutes Beispiel. –

Verwandte Themen