<CollectionViewSource x:Key="messages" Source="{Binding src}">
<CollectionViewSource.GroupDescriptions>
<PropertyGroupDescription PropertyName="Group"/>
</CollectionViewSource.GroupDescriptions>
<CollectionViewSource.SortDescriptions>
<SortDescription PropertyName="Group" />
</CollectionViewSource.SortDescriptions>
</CollectionViewSource>
上面的代码按字母顺序排列。但是我希望按照来自groupitems的日期对组进行排序。
例如,我有3组。
Group A
- Invoice("cd", 06-24-2015)
- Invoice("car", 06-01-2015)
Group B
- Invoice("cd", 04-21-2015)
- Invoice("car", 06-17-2015)
Group C
- Invoice("cd", 07-02-2015)
- Invoice("car", 06-08-2015)
我希望......的结果是这样的。
Group C
- Invoice("cd", 07-02-2015)
- Invoice("car", 06-08-2015)
Group A
- Invoice("cd", 06-24-2015)
- Invoice("car", 06-01-2015)
Group B
- Invoice("cd", 04-21-2015)
- Invoice("car", 06-17-2015)
组订单是C组 - > A组 - > B组。因为每个组项的最近日期是结果的比较目标。
C组的最近日期是07-02-2015。 A组的最近日期是06-24-2015。 B组的最近日期是06-17-2015。
所以结果是C - > A - > B.
如何实现这一目标?
.Net 4.6.2增加了GroupDescription.SortDescriptions
,它的工作方式与CollectionViewSource.SortDescriptions
相同,而GroupDescription.CustomSort
则允许您提供IComparer
对象。
这应该工作:
<CollectionViewSource x:Key="messages" Source="{Binding src}">
<CollectionViewSource.GroupDescriptions>
<PropertyGroupDescription PropertyName="Group"/>
</CollectionViewSource.GroupDescriptions>
<CollectionViewSource.SortDescriptions>
<SortDescription PropertyName="Date" Direction="Descending" />
</CollectionViewSource.SortDescriptions>
</CollectionViewSource>