在WPF中,CollectionViewSource允许排序(SortDescriptions)和分组(GroupDescriptions)。但是,我找不到订购这些团体的方法。有可能吗?
答案 0 :(得分: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两个排序说明允许我们先对组进行排序,然后对组内的项目进行排序。
有关详情,请点击此处
答案 1 :(得分:4)
虽然不是那么简单,但可以进行组排序。我将在这个例子中解释它。
class CollectionElement
{
public string Name {get; set; }
public string Group {get; set; }
}
如果您希望对元素进行分组并按字母顺序对组进行排序,然后按字母顺序对每个组中的元素进行排序,那么您应该执行以下操作:
Group
属性Group
Name
分组过程似乎可以通过以下方式有效地工作:因此,迭代已排序的元素。遇到未知组的元素时 - 创建一个组并将其添加到组列表中。遇到现有组中的元素时 - 将其添加到现有组。 (实际实施可能会有所不同)。因此,如果您的元素按照您希望组出现的顺序排序,您将有效地对组进行排序。