【问题标题】:Why is `ICollectionView.MoveCurrentToNext` moving to items that are not in the filter range?为什么 `ICollectionView.MoveCurrentToNext` 会移动到不在筛选范围内的项目?
【发布时间】:2020-07-31 10:52:36
【问题描述】:

我有一个由谓词过滤的CollectionView。当我调试它时,我可以看到结果视图只包含与过滤器匹配的项目。但是,当我使用MoveCurrentTo*()-方法时,CurrentItem-指针似乎在未过滤的源集合中移动,而不是在过滤的源集合中移动,即它不会带我到下一个(/上一个/第一个/最后一个)项目匹配我的过滤器,而只是源集合中的下一个过滤器-虽然仍然返回true,根据文档,这意味着新的当前项目应该在视图中(据我了解它不是)。这肯定不是有意的行为,可以吗?我可能做错了什么?

在我的例子中,源集合是一个名为EntriesObservableCollection 实例。我使用CollectionViewSource.GetDefaultView(Entries) 获取对默认视图的引用(我通过CollectionViewSource 绑定到WPF ListView 控件),然后使用new CollectionView(Entries) 创建辅助视图。我遇到问题的正是这种次要观点。

【问题讨论】:

    标签: c# collectionviewsource


    【解决方案1】:

    问题显然是我直接实例化了CollectionView,而不是像ListCollectionView 这样的派生类之一。前者仅仅是集合视图的基类,它本身并没有实现排序、分组以及我现在发现的过滤等高级功能。切换到ListCollectionView 后,现在一切正常。

    P.S.:在偶然发现this thread on MSDN 之后,我能够解决这个问题,因此感谢 Thomas Claudius Huber 的相关指针!

    【讨论】:

      猜你喜欢
      • 2013-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多