自定义排序算法到BindingListCollectionView

本文关键字:BindingListCollectionView 算法 排序 自定义 | 更新日期: 2023-09-27 18:02:00

我正在一个有一些DataGrid的WPF项目上工作,并且在其中一些我需要应用自定义排序算法。所以我一直在寻找一种方法来实现这一点,在许多网页中,我发现了以下代码:

var myListView = CollectionViewSource.GetDefaultView(myDataGrid.ItemsSource);
ListCollectionView myListCollectionView = myListView as ListCollectionView;
myListCollectionView.CustomSort = new CustomSorter();
.
.
.
public class CustomSorter : IComparer
{
    public int Compare(object x, object y)
    {
        // sorting logic ...
    }
}

这似乎是一个非常好的方法来执行自定义排序,但我的问题是,我不能将我的变量myListView转换为ListCollectionView,因为它原来是一个BindingListCollectionView对象,除了缺乏设置自定义排序算法的功能。

我找到了这个解决方案,但它不适合我,因为他们试图做以下事情:

ListCollectionView coll = new ListCollectionView(CollectionViewSource.GetDefaultView(myDataGrid.ItemsSource));

但是没有构造函数接受ICollectionView对象作为参数(这是GetDefaultView函数返回的)。

所以,有任何方法来应用自定义排序算法到BindingListCollectionView对象?

提前谢谢你。

编辑:

不幸的是,解决方案被放置在DataGrid划分的类中,因为解决方案必须是泛型的。

希望有人能帮助我。

自定义排序算法到BindingListCollectionView

将您的属性MyPropertyToSortOn设置为实现IComparable的自定义类型,然后向您的listview添加排序描述符:

ListView.Items.SortDescriptions.Add(new SortDescription("MyPropertyToSortOn", ListSortDirection.Descending))

public class MyPropertyClass: IComparable{
  public int CompareTo(object obj) {
    //custom comparison implemented here, returns -1,0 or 1
  }
}

public class MyDataClass{
   public MyPropertyClass MyPropertyToSortOn {get;set;}
}

相关文章:
  • 没有找到相关文章