我实际上是一名Android开发人员,当我将大量图片加载到ListBox
时,我遇到了内存异常的问题。
我不了解Windows Phone应用程序开发,所以请建议一个更好的解决方案,从Windows Phone中的URL将大量图像加载到ListBox
。
代码如下:
public class listboxrows
{
public string text1 { get; set; }
public string imageUri { get; set; }
public string text2 { get; set; }
public string instID { get; set; }
}
<Image Grid.Column="0" Width="90" Height="90" Source="{Binding imageUri}" ></Image>
我想知道这是否是从网址加载图片的有效方式。
如果我有大量的图像,它将显示内存异常。
建议我一个更好的选择,我可以有效地加载任意数量的图像,没有任何内存异常。
是否有任何外部项目可以实现我的目标?
答案 0 :(得分:0)
虽然我没有编写实际代码来测试这个,但我认为这里的正确方法是确保您使用数据虚拟化。 This article提供了一个很好的例子(即使它讨论了Windows Phone 7开发,它仍然适用)。
如果要显示大量数据,您可能需要更进一步,查看this article中的方法,进一步优化显示ListBox
项目的工作。
当然,标准免责声明是用户必须滚动大量项目的UI并不一定总是最好的方法。
答案 1 :(得分:0)
我认为this article会有所帮助。
永远不要将服务器托管的图像直接绑定到控件,因为Silverlight运行时将使用UI线程(使用WebClient)从服务器获取该图像,这会使UI无响应一段时间。
使用后台线程和基于HttpWebRequest类的实现以有效的方式下载图像数据,最终创建BitmapImage并将其设置为源。一个干净的MVVM包装器将使您的整个图像管理变得非常简单。