为什么 `ICollectionView.MoveCurrentToNext` 移动到不在过滤范围内的项目?
Why is `ICollectionView.MoveCurrentToNext` moving to items that are not in the filter range?
我有一个 CollectionView
被谓词过滤。当我调试它时,我可以看到结果视图只包含与过滤器匹配的项目。但是,当我使用 MoveCurrentTo*()
-方法时,CurrentItem
-指针似乎在未过滤的源集合中移动,而不是在过滤的源集合中移动,即它不会带我到下一个(/previous/first/last ) 项目匹配我的过滤器,而只是源集合中的下一个 - 同时仍然返回 true
根据文档意味着新的当前项目应该在视图中(据我了解它不是).这肯定不是故意的行为,是吗?我可能做错了什么?
我的源集合是一个名为 Entries
的 ObservableCollection
实例。我使用 CollectionViewSource.GetDefaultView(Entries)
获取对默认视图的引用(我通过 CollectionViewSource
绑定到 WPF ListView
控件)然后使用 new CollectionView(Entries)
创建辅助视图.这是我遇到问题的次要观点。
问题显然是我直接实例化了 CollectionView
而不是像 ListCollectionView
这样的派生 class 之一。前者只是集合视图的基础 class,它本身并不实现排序、分组以及我现在发现的过滤等高级功能。切换到 ListCollectionView
.
后一切正常
P.S.: 我在遇到 this thread on MSDN 后解决了这个问题,所以感谢 Thomas Claudius Huber 的相关指导!
我有一个 CollectionView
被谓词过滤。当我调试它时,我可以看到结果视图只包含与过滤器匹配的项目。但是,当我使用 MoveCurrentTo*()
-方法时,CurrentItem
-指针似乎在未过滤的源集合中移动,而不是在过滤的源集合中移动,即它不会带我到下一个(/previous/first/last ) 项目匹配我的过滤器,而只是源集合中的下一个 - 同时仍然返回 true
根据文档意味着新的当前项目应该在视图中(据我了解它不是).这肯定不是故意的行为,是吗?我可能做错了什么?
我的源集合是一个名为 Entries
的 ObservableCollection
实例。我使用 CollectionViewSource.GetDefaultView(Entries)
获取对默认视图的引用(我通过 CollectionViewSource
绑定到 WPF ListView
控件)然后使用 new CollectionView(Entries)
创建辅助视图.这是我遇到问题的次要观点。
问题显然是我直接实例化了 CollectionView
而不是像 ListCollectionView
这样的派生 class 之一。前者只是集合视图的基础 class,它本身并不实现排序、分组以及我现在发现的过滤等高级功能。切换到 ListCollectionView
.
P.S.: 我在遇到 this thread on MSDN 后解决了这个问题,所以感谢 Thomas Claudius Huber 的相关指导!