NewItemPlaceholderPosition设为AtEnd时ListCollectionView定位不同步问题
问题结论
这是ListCollectionView的设计特性,不属于Bug。
原因说明
- 位于集合末尾的
NewItemPlaceholder本质是WPF为列表编辑场景预留的占位标记,不属于真实的业务数据项,官方设计上就不允许它成为有效当前项。 MoveCurrentTo返回true仅代表传入的对象确实存在于ListCollectionView的视图序列中,操作本身执行成功;但框架内部会额外做校验:如果目标项是占位符,会自动将CurrentPosition回退到最后一个有效业务数据项的位置,避免上层业务逻辑错误将占位符当作普通数据处理。- 可以通过打印最后一次操作的
collView.CurrentItem验证:此时的当前项仍然是第二个Customer对象,而非占位符对象,和CurrentPosition = 1的结果完全对应。
补充建议
如果需要判断导航的目标是不是占位符,可以在调用MoveCurrentTo后,比对CurrentPosition和IndexOf返回值,如果二者不一致且IndexOf返回值等于Count-1,即可判定当前导航目标是末尾占位符。
内容的提问来源于stack exchange,提问作者DmitryB
相关产品推荐
相关产品推荐

