【发布时间】:2014-06-23 14:54:52
【问题描述】:
我有以下情况:我得到一个应该按SortId 属性排序的项目列表。
我已经在我的 ItemViewModels 中实现了IComparable<T> 接口,这样我就可以在我的ICollectionView.CustomSort 属性中使用Comparer.Default 来应用排序而不使用反射(PropertySortDescription 会这样做)。
现在,我的问题是项目有时没有设置SortId 属性,因为它们应该按照它们在集合中出现的顺序简单地排序。但是,项目并没有保持顺序,而是以相反的顺序显示,有时甚至完全混合 - 这似乎取决于项目的数量。
有没有办法避免这种行为?如果我不应用任何排序,则项目以正确的顺序出现。但是,我必须根据项目的 SortId 属性动态打开或关闭排序 - 我根本不喜欢......还有其他想法吗?
【问题讨论】:
-
在我看来,this 与 stable sorting algorithm 的组合可以解决问题。 Linq2Objects
.OrderBy稳定。 -
感谢您的建议!到目前为止我还不知道稳定的排序算法——所以至少我学到了一些新东西,尽管我没有尝试这个,因为它会改变我的整个排序策略。
标签: c# wpf sorting mvvm icollectionview