在ListView-Binding中过滤和排序ObservableCollection

在.net的早期版本中,您可以使用类似的东西

ICollectionView collectionView = CollectionViewSource.GetDefaultView(AllImages); 

为UI-Elements构建过滤机制。 但这似乎不再存在于WinRT中。

我正在使用ListBox-Element来显示User-List。 User-Class包含属性username(String),isOnline(Boolean),isFriend(Boolean)和unreadMails(Int)。 我需要某种过滤和排序。

过滤:

  • 没有filter
  • 只有isOnline == true

订购方式:

  • unreadMails> 0
  • unreadMails == 0
    • AND isOnline == true
      • AND isFriend == true
      • isFriend == false
    • AND isOnline == false
      • AND isFriend == true
      • AND isFriend == false

运行时属性可能会发生变化,如果列表自动更新,这将很酷。 (绑定已经有效,只有filter和订单丢失)。

任何想法如何实现这一目标?

正如您所知,CollectionViewSource不支持WinRT / XAML中的filter或排序。 然后,您的解决方案是对关联的ObservableCollection的内容进行排序。

CodeProject上有一个自定义ICollectionView实现,它添加了排序/过滤function。 这是文章/代码的链接: http : //www.codeproject.com/Articles/527686/A-WinRT-CollectionView-class-with-Filtering-and-So

这将带回WinolT版ICollectionView缺少的一些function。 希望这会帮助像我一样遇到这个问题的人,寻找过滤集合的能力。