How can I apply a custom sort rule to a WPF DataGrid? How can I apply a custom sort rule to a WPF DataGrid? wpf wpf

How can I apply a custom sort rule to a WPF DataGrid?


this is how i do it : I do derive from the grid to keep all of this inside the class, so i attach to event handlers internally

attach to the sorting event

dataGrid.Sorting += new DataGridSortingEventHandler(SortHandler);

implement the method (i do this in a derived class)

void SortHandler(object sender, DataGridSortingEventArgs e){    DataGridColumn column = e.Column;    IComparer comparer = null;    //i do some custom checking based on column to get the right comparer    //i have different comparers for different columns. I also handle the sort direction    //in my comparer    // prevent the built-in sort from sorting    e.Handled = true;    ListSortDirection direction = (column.SortDirection != ListSortDirection.Ascending) ? ListSortDirection.Ascending : ListSortDirection.Descending;    //set the sort order on the column    column.SortDirection = direction;    //use a ListCollectionView to do the sort.    ListCollectionView lcv = (ListCollectionView)CollectionViewSource.GetDefaultView(this.ItemsSource);    //this is my custom sorter it just derives from IComparer and has a few properties    //you could just apply the comparer but i needed to do a few extra bits and pieces    comparer = new ResultSort(direction);    //apply the sort    lcv.CustomSort = comparer;}


I have an MVVM solution for this problem which makes use of attached behaviours. If you prefer to use code-behind, @Aran's solution will do the trick too.

https://stackoverflow.com/a/18218963/2115261