为什么 `ICollectionView.MoveCurrentToNext` 移动到不在过滤范围内的项目?

Why is `ICollectionView.MoveCurrentToNext` moving to items that are not in the filter range?

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

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

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

后一切正常

P.S.: 我在遇到 this thread on MSDN 后解决了这个问题,所以感谢 Thomas Claudius Huber 的相关指导!