【发布时间】:2012-07-27 11:55:35
【问题描述】:
我有一个枢轴视图,有 6 个枢轴项。每个数据透视项都包含一个电影列表。每部电影都有一个封面图片,旁边还有一个标题和一些其他元数据。显然,要按照我的意愿设置样式,必须使用一些网格/堆栈面板。另外,我有每个项目的上下文菜单。在我的列表框上方,我有一个性能进度条,可以在加载数据时显示(我从 Web API 获取所有内容)。我的问题是其中一个列表包含的电影比其他列表多得多,大约 100 部。加载此列表时,应用程序使用大约 150-160 mb 内存,超过了 90 mb 的限制。看起来所有图像和内容都已立即加载(我认为这会导致此问题)。
我想要的是这样的:
首先加载标题和元数据,然后仅加载列表中用户当前所在位置的图像,以便在用户向下滚动之前加载列表中较长的图像。
我尝试过使用 deferredloadlist、lazylist 和普通列表框,并尝试将虚拟化设置为标准和回收,但没有结果。我必须承认我不确定所有这些事情到底是做什么的。有谁知道我该如何解决这个问题?提前致谢。
附言。列表框的 xaml 代码有些笨拙,所以我决定不在这篇文章中包含它。如果您真的需要查看它以提供帮助,请告诉我。
更新:我已经能够通过使用虚拟化列表框来减少内存使用量,但它仍然在 100 mb 左右。我在某处读到设置 bitmapImage.ImageSource =null;完成使用图像后,会将其从内存中清除。当它们在列表框中时,我如何为每个图像执行此操作?
【问题讨论】:
-
请在 pastebin.com 中分享您的 xaml 代码,以便我可以重现并建议一个干净的解决方案
标签: c# windows-phone-7 memory listbox virtualization