ItemsStackPanel 一直使用缓存的项目,而不是每次都重新创建它们

ItemsStackPanel keeps using cached items instead of recreating them each time

我的 Windows Phone 8.1 WinRT 应用程序中有一个 ListView,它也可以对项目进行分组。组模板已定义,它们包括 Rectangle 个对象,ImageBrush 个对象用于 Fill 属性。 ListView 有一个 ItemsStackPanel 作为它的 ItemsPanel 来显示项目和组。

问题是,我认为,ItemsStackPanel 在虚拟化时重用项目容器,因为图像加载和绘制一次,但当我滚动时,图像顺序被打乱,其中一些完全丢失了图像,并且 ImageBrush 的图像加载事件也不会被触发,表明项目已缓存。

我尝试在 ItemsStackPanel 上设置 VirtualizingStackPanel.VirtualizationMode="Standard" 而不是 "Recycling",但似乎没有任何效果。

如有任何帮助,我们将不胜感激。

原来在 ItemsStackPanel 的组 header 模板中处理 ImageBrush.ImageFailed(或任何其他事件)会导致非常奇怪的行为。

我并没有真正解决问题,只是删除了事件处理程序并实现了另一种机制来在找不到主图像文件时加载默认图像。

我在 Image 中加载了另一个默认图像,并将另一个 Image 放置在第一个图像之上,加载实际图像文件。如果加载失败,下面的显示。