如何对可观察集合进行排序



我知道还有其他类似的帖子,但是没有一个完全回答了我的问题。

我在WPF应用程序中有多个不同的可观察集合,我正在工作,我需要对它们进行简单的字母排序,以使它们按字母顺序显示。

是否有一个简单的方法来做到这一点与Linq?如果没有,有没有其他简单的方法?

您可以提供自己的自定义排序逻辑,也可以使用CollectionView排序描述符属性对您的集合进行排序。首先看看这些链接,它们可能会有所帮助http://bea.stollnitz.com/blog/?p=17http://www.wpftutorial.net/DataViews.htmlhttp://bea.stollnitz.com/blog/?p=24

想到什么:

  1. 在View中排序,而不是在ViewModel中排序
  2. 拉入列表,排序列表,清除集合,插入回
  3. 自定义sortedoobservablecollection,但我不确定视图如何对此作出反应。

不确定你的具体需求

你可以使用排序的可观察对象集合——它是一个集合,它在任何时候都以排序的顺序维护项目(所以你只要插入项目,它就会被插入到集合的正确位置)。

有几个实现,像这个或这个。

你应该使用CollectionViewSource而不是ObservableCollection,或者你可以在CollectionViewSource中包装你的集合。

public CollectionViewSource GetSortedView{
   get{
      CollectionViewSource view = new CollectionViewSource(myColl);
      view.SortDescriptors.Add(new SortDescriptor("propertyname"), Ascending);
      return view;
   }
}

的好处是,如果你将这个视图绑定到datagrid等,它将显示列排序标志,也让用户做进一步的排序。

看看这个http://mokosh.co.uk/post/2009/08/04/how-to-sort-observablecollection/

看起来是一个干净和容易的实现。

如果您只需要使用linq,则可以使用OrderBy扩展方法。关于orderby方法的更多信息在这里

相关内容

  • 没有找到相关文章

最新更新