2011-01-20 16 views
13

W trybie WPF, CollectionViewSource pozwala na sortowanie (SortDescriptions) i grupowanie (GroupDescriptions). Nie mogę jednak znaleźć sposobu na zamówienie grup. Czy to możliwe?Jak mogę zamówić Grupy w WPF

Odpowiedz

21
<CollectionViewSource x:Key="cvs" Source="{Binding Source={StaticResource animals}, Path=AnimalList}"> 
    <CollectionViewSource.GroupDescriptions> 
     <PropertyGroupDescription PropertyName="Category"/> 
    </CollectionViewSource.GroupDescriptions> 
    <CollectionViewSource.SortDescriptions> 
     <scm:SortDescription PropertyName="Category" /> 
     <scm:SortDescription PropertyName="Name" /> 
    </CollectionViewSource.SortDescriptions> 
</CollectionViewSource> 

Wystarczy dodać dwa SortDescriptions.Adding dwa opisy sortowania pozwala nam uporządkować grupy, a następnie elementy w obrębie grup.

Dalsze sprawdzanie

http://bea.stollnitz.com/blog/?p=17

+0

pomimo faktu, że nie ma bea.stollnitz.com domeny (już): Podczas 'GroupDescriptions' może zawierać dowolną klasę wynikającą z' GroupDescription' - konieczności tylko przesłonić metodę 'GroupNameFromItem', która tłumaczy dowolny obiekt wejściowy na dowolny obiekt wyjściowy,' SortDescriptions' obsługuje tylko atrybut SortUescription (!!!!!) ', który atakuje tylko nazwy właściwości. Nie ma sposobu, aby powiązać te 2 światy, klasę i klasę abstrakcyjną. – springy76

+0

to nie działa dla mnie ... Używam 'ICollectionView' w kodzie za (nie xaml) – JobaDiniz

4

Sortowanie według grup jest możliwe, chociaż nie jest to takie proste. Wyjaśnię to na przykładzie.

class CollectionElement 
{ 
    public string Name {get; set; } 
    public string Group {get; set; } 
} 

Jeśli chcesz pierwiastków grup i sortowania grup alfabetycznie następnie posortować elementy w obrębie każdej grupy alfabetycznie wówczas należy wykonać następujące czynności:

  1. Dodaj PropertyGroupDescription przedstawieniu Group własność
  2. Dodaj SortDescription przedstawieniu Group
  3. Dodaj odniesienie do opisu sortowania Name

Proces grupowania wydaje się działać tak samo skutecznie, jak następuje: Iteracja poprzez posortowane w ten sposób elementy. Po napotkaniu elementu z nieznanej grupy - utwórz grupę i dodaj ją do listy grup. Gdy napotykasz element z istniejącej grupy - dodaj go do istniejącej grupy. (Rzeczywiste wdrożenie może być inne). Więc jeśli twoje elementy są posortowane w kolejności, w jakiej chcesz, aby twoje grupy się pojawiły, skutecznie posortujesz grupy.

Powiązane problemy