从URL加载大量图像

时间:2013-05-13 05:53:59

标签: c# image listbox windows-phone

我实际上是一名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>

我想知道这是否是从网址加载图片的有效方式。

如果我有大量的图像,它将显示内存异常。

建议我一个更好的选择,我可以有效地加载任意数量的图像,没有任何内存异常。

是否有任何外部项目可以实现我的目标?

2 个答案:

答案 0 :(得分:0)

虽然我没有编写实际代码来测试这个,但我认为这里的正确方法是确保您使用数据虚拟化。 This article提供了一个很好的例子(即使它讨论了Windows Phone 7开发,它仍然适用)。

如果要显示大量数据,您可能需要更进一步,查看this article中的方法,进一步优化显示ListBox项目的工作。

当然,标准免责声明是用户必须滚动大量项目的UI并不一定总是最好的方法。

答案 1 :(得分:0)

我认为this article会有所帮助。

  
      
  • 永远不要将服务器托管的图像直接绑定到控件,因为Silverlight运行时将使用UI线程(使用WebClient)从服务器获取该图像,这会使UI无响应一段时间。

  •   
  • 使用后台线程和基于HttpWebRequest类的实现以有效的方式下载图像数据,最终创建BitmapImage并将其设置为源。一个干净的MVVM包装器将使您的整个图像管理变得非常简单。

  •