【发布时间】:2023-03-19 23:00:02
【问题描述】:
有什么方法可以让 Windows Phone 中的 VirtualizingStackPanel 仅在项目尚未加载时清理/重新虚拟化它们?
解释一下我想要什么:当我使用带有图像的重 ItemTemplate 加载大量项目列表时,我会使用 VirtualizingStackPanel 以避免阻塞 UI 并等到所有元素都已绘制完毕到屏幕上。
如果您在列表中滚动向下又好又慢,这很好。但问题是当您再次向上滚动查看已经加载过一次的项目时。由于VirtualizingStackPanel 现在已经清理了那些需要再次加载的元素。
我想要的是那些已经加载的项目不要被清理。
我不知道他们是怎么做到的,但 IMDb 应用似乎在他们的 top 250 和 bottom 100 电影列表中使用了类似的东西。我还注意到它们不会在您滚动时加载图像,因此除非您在列表中静止不动,否则它不会阻塞 UI。
非常感谢任何帮助!
【问题讨论】:
-
您实际上在问什么问题?你在这里的真正目标是什么?如果向下滚动的性能很好,为什么您对向上滚动不满意?或者您真的在问如何推迟项目模板中较重组件的加载,直到滚动在短时间内保持不变?清楚自己真正追求的是什么。
-
我想我已经说得很清楚了:VirtualizingStackPanel 需要重新加载已经加载过一次的项目,当它们移出视图时。这是一件坏事,我不想这样。我想要的是已经创建的项目不会被卸载,然后在它们第二次进入视图时再次加载,即我希望它们不被清理。
标签: c# .net silverlight windows-phone-7 compact-framework