2011-01-20 3 views

ответ

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> 

Просто добавьте два SortDescriptions.Adding два описания сортировки позволяет сортировать группы первой, а затем элементы внутри групп.

Для получения дополнительной проверки здесь

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

+0

Несмотря на то, что нет домена bea.stollnitz.com (больше): В то время как 'GroupDescriptions' может содержать любой класс, производный от' GroupDescription' - имея в только переопределяет метод 'GroupNameFromItem', который переводит любой входной объект в любой выходной объект,' SortDescriptions' поддерживает только STRUCT (!!!!!) 'SortDescription', который предназначен только для имен свойств. Невозможно сопоставить эти 2 мира, структуру и абстрактный класс. – springy76

+0

это не сработало для меня ... Я использую 'ICollectionView' в коде позади (а не xaml) – JobaDiniz

4

Возможна сортировка групп, хотя это не так просто. Я объясню это на примере.

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

Если вы хотите, чтобы сгруппировать элементы и отсортировать группы по алфавиту затем отсортировать элементы в каждой группе по алфавиту, то вы должны сделать следующее:

  1. Добавить PropertyGroupDescription ссылку Group недвижимости
  2. Добавить SortDescription ссылку Group
  3. Add SortDescription ссылки Name

Процесс группировки, по-видимому, работает эффективно следующим образом: Итерация через уже отсортирована элементов. При обнаружении неизвестной группы элементов - создайте группу и добавьте ее в список групп. Когда встречается элемент из существующей группы - добавьте его в существующую группу. (Фактическая реализация может быть разной). Поэтому, если ваши элементы сортируются в том порядке, в котором вы хотите, чтобы ваши группы отображались, вы эффективно сортируете группы.

Смежные вопросы