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