Byungkwon Oh
Byungkwon Oh

Reputation: 11

How to sort Groups in listview using CollectionViewSource?

<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

Answers (2)

Artfunkel
Artfunkel

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

Liero
Liero

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

Related Questions