Reputation: 11
<CollectionViewSource x:Key="messages" Source="{Binding src}">
<CollectionViewSource.GroupDescriptions>
<PropertyGroupDescription PropertyName="Group"/>
</CollectionViewSource.GroupDescriptions>
<CollectionViewSource.SortDescriptions>
<SortDescription PropertyName="Group" />
</CollectionViewSource.SortDescriptions>
</CollectionViewSource>
The code above works alphabetically. but I want to sort groups by the date which is from groupitems.
For example, I have 3 groups.
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)
A result I hope to... is like this.
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)
Group order is Group C -> Group A -> Group B. Because recent dates for each groupitems are comparison target for result.
Recent date for Group C is 07-02-2015. Recent date for Group A is 06-24-2015. Recent date for Group B is 06-17-2015.
so the result is C -> A -> B.
How to achieve this goal?
Upvotes: 1
Views: 1184
Reputation: 1852
.Net 4.6.2 added GroupDescription.SortDescriptions
, which works in the same way as CollectionViewSource.SortDescriptions
, and GroupDescription.CustomSort
, which allows you to provide an IComparer
object.
Upvotes: 1
Reputation: 27338
this should work:
<CollectionViewSource x:Key="messages" Source="{Binding src}">
<CollectionViewSource.GroupDescriptions>
<PropertyGroupDescription PropertyName="Group"/>
</CollectionViewSource.GroupDescriptions>
<CollectionViewSource.SortDescriptions>
<SortDescription PropertyName="Date" Direction="Descending" />
</CollectionViewSource.SortDescriptions>
</CollectionViewSource>
Upvotes: 0