Listview ItemsStackPanel保持使用缓存项,而不是每次重新创建它们

Listview ItemsStackPanel保持使用缓存项,而不是每次重新创建它们,listview,windows-phone-8.1,winrt-xaml,Listview,Windows Phone 8.1,Winrt Xaml,我的Windows Phone 8.1 WinRT应用程序中有一个列表视图,该应用程序还对项目进行分组。定义了组模板,它们包括Rectangle对象和ImageBrush对象的Fill属性。 ListView有一个ItemsStackPanel作为其ItemsPanel来显示项目和组 问题是,我认为,ItemsStackPanel在虚拟化过程中重用项目容器,因为图像会被加载和绘制一次,但当我滚动时,图像顺序会混乱,其中一些会完全丢失图像,ImageBrush的图像加载事件也不会被触发,指示项目已

我的Windows Phone 8.1 WinRT应用程序中有一个
列表视图
,该应用程序还对项目进行分组。定义了组模板,它们包括
Rectangle
对象和
ImageBrush
对象的
Fill
属性。
ListView
有一个
ItemsStackPanel
作为其
ItemsPanel
来显示项目和组

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

我尝试在
项目跟踪面板上设置
虚拟化跟踪面板。虚拟化模式=“标准”
而不是
回收“
,但似乎没有任何效果


任何帮助都将不胜感激。

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

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


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

结果是处理
ImageBrush.ImageFailed
(或任何其他事件)在
ItemsStackPanel
的组头模板中会导致非常奇怪的行为

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


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

您是否正在处理codebehind中的listview项对象?我知道如果你用模板做得正确的话,这在WPF中是不会发生的,但我认为你真的是在UWP中,你只是添加了WPF标签,希望被脾气暴躁的老人否决(在我的情况下不起作用,也许我不够老或脾气暴躁)。我唯一要做的就是订阅ImageBrush.ImageFailed事件以加载默认图像,以防由于某种原因无法打开主图像(但这些处理程序在首次创建项目后不会被命中,仅在第一次)。绑定到同一源的ItemsWrapGrid没有此问题。有什么想法吗?我特别提到Windows Phone 8.1 WinRT是平台,但我认为WPF已经足够接近,可能有人也有同样的问题,可以提供帮助。没有想法,抱歉。如果我是你,我会创建一个最小的例子来重现这个问题。通常对我来说,我发现我无法在一个更简单的上下文中重现这个问题,所以我只是将未中断的示例与中断的实际代码进行比较,然后找到解决方案。但是如果你能写一个有效的MVCE(呃,我的意思是不起作用),对任何试图帮助你的人来说都是一个巨大的帮助。谢谢。可以。你在处理codebehind中的listview项目对象吗?我知道如果你用模板做得正确的话,这在WPF中是不会发生的,但我认为你真的是在UWP中,你只是添加了WPF标签,希望被脾气暴躁的老人否决(在我的情况下不起作用,也许我不够老或脾气暴躁)。我唯一要做的就是订阅ImageBrush.ImageFailed事件以加载默认图像,以防由于某种原因无法打开主图像(但这些处理程序在首次创建项目后不会被命中,仅在第一次)。绑定到同一源的ItemsWrapGrid没有此问题。有什么想法吗?我特别提到Windows Phone 8.1 WinRT是平台,但我认为WPF已经足够接近,可能有人也有同样的问题,可以提供帮助。没有想法,抱歉。如果我是你,我会创建一个最小的例子来重现这个问题。通常对我来说,我发现我无法在一个更简单的上下文中重现这个问题,所以我只是将未中断的示例与中断的实际代码进行比较,然后找到解决方案。但是如果你能写一个有效的MVCE(呃,我的意思是不起作用),对任何试图帮助你的人来说都是一个巨大的帮助。谢谢。行。