在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
- AND isOnline == true
运行时属性可能会发生变化,如果列表自动更新,这将很酷。 (绑定已经有效,只有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。 希望这会帮助像我一样遇到这个问题的人,寻找过滤集合的能力。