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
放置在第一个图像之上,加载实际图像文件。如果加载失败,下面的显示。
我的 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
放置在第一个图像之上,加载实际图像文件。如果加载失败,下面的显示。