0
votes

So I've got a plain vanilla DataGrid, and it's bound against an ICollectionView.

I handle the DataGrid's Sorting event, and set e.Handled to true, to suppress it's default behaviour, for some reason once I try to clear my ICollectionView's SortDescriptions, and add two sort descriptions in place, it does absolutely nothing, it does not honour the secondary sort at all. Here is my simple code:

    private void DataGrid_OnSorting(object sender, DataGridSortingEventArgs e)
    {
        DataGrid dataGrid = (DataGrid)sender;

        e.Handled = true;

        ListSortDirection direction = (column.SortDirection != ListSortDirection.Ascending) ? ListSortDirection.Ascending : ListSortDirection.Descending;


        var col = (DataContext as TeamModel).Players;

        col.SortDescriptions.Clear();
        col.SortDescriptions.Add(new SortDescription("Id", ListSortDirection.Ascending));
        col.SortDescriptions.Add(new SortDescription("Name", direction));
    }

I just want to simply have a primary and secondary sort, but it seems to be doing nothing.

Any ideas?

1

1 Answers

0
votes

You need to call .Refresh() of ICollectionView after you are finished editing the SortDescriptions

col.Refresh();

or alternatively you may use another method

using(col.DeferRefresh())
{
    col.SortDescriptions.Clear();
    col.SortDescriptions.Add(new SortDescription("Id", ListSortDirection.Ascending));
    col.SortDescriptions.Add(new SortDescription("Name", direction));
}