在wp7中从隔离存储中检索多个图像

时间:2011-06-22 07:28:17

标签: windows-phone-7 isolatedstorage

我正在尝试使用列表框从隔离存储中检索多个图像,但我不确定为什么它只是从孤立存储中检索最新图像。所以希望有人可以帮我修改我的代码或者可以为我提供示例代码这与我的工作大致相同。谢谢。

我的代码:

private void LoadFromLocalStorage(string imageFolder, string imageFileName )
{ 

  var isoFile = IsolatedStorageFile.GetUserStoreForApplication();
  if (!isoFile.DirectoryExists(imageFolder))

{
  isoFile.CreateDirectory(imageFolder);
}

  string filePath = Path.Combine(imageFolder, imageFileName);
  using (var imageStream = isoFile.OpenFile(filePath, FileMode.Open, FileAccess.Read))
{
  var imageSource = PictureDecoder.DecodeJpeg(imageStream);
  BitmapImage bi = new BitmapImage();
  ListBoxItem item = new ListBoxItem();
  bi.SetSource(imageStream);
  item.Content = new Image() 
{ 
  Source = bi, MaxHeight = 100, MaxWidth = 100 };
  listBox1.Items.Add(item);

}

1 个答案:

答案 0 :(得分:2)

如果你告诉你得到了什么结果会很有帮助。

  • 你只看到1个元素吗?
  • 你看到多个元素并且它们是相同的吗?
  • 你看到多个元素,只有1个显示图片而其他元素是空的吗?

无论如何,这不是处理列表框的正确方法。但首先要做的事情。 这一行没有任何用处:

var imageSource = PictureDecoder.DecodeJpeg(imageStream);

此代码应该可以正常工作(但似乎),但代码外部可能存在错误。调用此函数的次数以及传递的参数 - 这才是真正重要的。

但我会更改代码以使用数据绑定和正确的ItemsSource。

  1. 为项目创建课程

    public class MyImage 
    { 
        public string FilePath {get; set;} 
        public ImageSource LoadedSource {get; set;} 
    }
    
  2. 创建 ObservableCollection< MyImage>()并填入您的数据。

  3. 通过设置 ItemsSource
  4. 将其绑定到 ListBox
  5. 使用Image和Binding设计合适的ItemTemplate:

    <Image Source={Binding LoadedSource}/>
    
  6. 此设置将帮助您轻松调试问题并本地化问题。您可能无法正确调用原始函数。