2011-01-20 8 views

Respuesta

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> 

Sólo tiene que añadir dos SortDescriptions.Adding dos descripciones ordenar nos permite clasificar los grupos primero y luego los elementos dentro de los grupos.

Para más cheque aquí

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

+0

A pesar de que no hay dominio bea.stollnitz.com (ya): 'Mientras GroupDescriptions' puede contener cualquier clase que deriva de' GroupDescription' - tener que solo anula el método 'GroupNameFromItem' que traduce cualquier objeto de entrada a cualquier objeto de salida, el' SortDescriptions' solo admite STRUCT (!!!!!) 'SortDescription' que solo se dirige a nombres de propiedad. No hay forma de correlacionar esos 2 mundos, una estructura y una clase abstracta. – springy76

+0

esto no funcionó para mí ... Estoy usando 'ICollectionView' en el código detrás (no xaml) – JobaDiniz

4

La clasificación de grupos es posible, aunque no es tan sencilla. Lo explicaré en el ejemplo.

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

Si desea elementos del grupo y ordenar los grupos alfabéticamente a continuación, ordenar los elementos dentro de cada grupo alfabéticamente a continuación, debe hacer lo siguiente:

  1. Añadir PropertyGroupDescription referencia Group propiedad
  2. Añadir SortDescription referencia Group
  3. Agregar SortDescription referencia Name

El proceso de agrupación parece funcionar efectivamente de la siguiente manera: Iterar a través de elementos ya clasificados consecuentemente. Al encontrar elementos de un grupo desconocido, cree un grupo y agréguelo a la lista de grupos. Al encontrar un elemento del grupo existente, agréguelo al grupo existente. (La implementación real puede ser diferente). Entonces, si sus elementos están ordenados en el orden en que desea que aparezcan sus grupos, efectivamente clasificará los grupos.

Cuestiones relacionadas