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

时间:2017-04-06 18:55:19

标签: listview windows-phone-8.1 winrt-xaml

我的Windows Phone 8.1 WinRT应用程序中有一个ListView,它也可以对项目进行分组。定义了组模板,它们包含Rectangle个对象,其ImageBrush属性为Fill个对象。 ListView ItemsStackPanel的{​​{1}}为ItemsPanel,以显示项目和群组。

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

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

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

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

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

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