2

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

ICollectionView collectionView = CollectionViewSource.GetDefaultView(AllImages);

为 UI 元素建立过滤机制。但这似乎不再存在于 WinRT 中。

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

过滤:

  • 没有过滤器
  • 只有 isOnline == true

订购方式:

  • 未读邮件 > 0
  • 未读邮件 == 0
    • AND isOnline == true
      • AND isFriend == true
      • 是朋友 == 假
    • AND isOnline == false
      • AND isFriend == true
      • AND isFriend == false

运行时属性可能会发生变化,如果列表自动更新会很酷。(绑定已经在工作,只是缺少过滤器和顺序)。

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

4

2 回答 2

2

正如您发现的那样,CollectionViewSource 不支持 WinRT/XAML 中的筛选器或排序。然后,您的解决方案是对关联的 ObservableCollection 的内容进行排序。

于 2013-02-19T16:44:56.397 回答
1

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

这将恢复 WinRT 版本的ICollectionView. 希望这会帮助像我一样遇到这个问题的人,寻找过滤集合的能力。

于 2015-01-27T17:44:10.140 回答