我正在通过监听ListView
事件在ChoosingItemContainer
中呈现异构数据数组。除项目回收外,其他一切工作正常:ListView
始终提示错误的容器类型(这是一个具有“更多加载”功能的列表,因此,每次完成加载时,“更多加载”项目始终位于回收队列的顶部)。是否有办法从ListViewBase
的回收队列中拉出另一个容器,或者至少从回收队列中删除当前建议的容器,所以我可以另外管理自己的基于标签的回收站,下一次将出现另一个容器? / p>
Microsoft网站上的
ChoosingItemContainer
示例建议使用类似自己的回收站的方法,但是“ relevantStorage”的含义以及如何从ListViewBase
删除不匹配的回收容器的含义相当神秘,因此它们每次都不会再次出现。
我在这里想念什么?
答案 0 :(得分:0)
结果是,您应该另外听一个单独的ContainerContentChanging
事件,该事件不仅会影响演示阶段,而且还会通知有关项目回收的信息。现在一切都按预期工作(好了,几乎按预期进行:ListView不会立即重用消失的列表项,而是在屏幕上保留了约100个项的大量供应-有时回收队列为空;有时它从开始时就请求少量项目列表视图滚动到末尾时的列表;等等-但通常情况下效果很好)。这是一个用法示例:
private void HandleContainerContentChanging(ListViewBase sender, ContainerContentChangingEventArgs args) {
if (args.InRecycleQueue) {
if (item.Tag is string itemType) {
_recycleBin.EnqueueItemWithType(itemType, item); // NOTE Do your own book-keeping here
args.Handled = true; // NOTE Handle event only in case of recycle to prevent breaking x:Phase bindings
}
}
}