Как я могу упорядочить группы в WPF

В WPF CollectionViewSource позволяет сортировать (SortDescriptions) и группировать (GroupDescriptions). Однако я не могу найти способ заказать группы. Возможно ли это?

Ответы

Ответ 1

<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. Добавление двух описаний сортировки позволяет нам сначала сортировать группы, а затем элементы внутри групп.

Подробнее здесь

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

Ответ 2

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

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

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

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