重写OnSorting时,WPF DataGrid多列排序不起作用

时间:2014-06-03 00:08:28

标签: wpf sorting datagrid

所以我有一个简单的vanilla DataGrid,它绑定了ICollectionView。

我处理DataGrid的Sorting事件,并将e.Handled设置为true,以抑制它的默认行为,由于某种原因,一旦我尝试清除ICollectionView的SortDescriptions,并添加两个排序描述,它绝对没有任何意义,它根本不尊重次要种类。这是我的简单代码:

    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));
    }

我只想简单地进行主要和次要排序,但似乎什么也没做。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

完成编辑SortDescriptions后,您需要调用ICollectionView的.Refresh()

col.Refresh();

或者您可以使用其他方法

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