Извлечение нескольких изображений из изолированного хранилища в wp7 - PullRequest
1 голос
/ 22 июня 2011

Я пытаюсь извлечь несколько изображений из изолированного хранилища, используя список, но я не уверен, почему он просто извлекает последнее изображение из изолированного хранилища. Поэтому надеюсь, что кто-нибудь может помочь мне исправить мой код или предоставить пример кода это работает, что примерно так же, как у меня. Спасибо.

Мой код:

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 Ответ

2 голосов
/ 06 августа 2011

Было бы полезно, если бы вы сказали, какие результаты вы получаете.

  • Вы видите только 1 элемент?
  • Видите ли вы несколько элементов, и они одинаковы?
  • Видите ли вы несколько элементов, и только 1 показывает изображение, а остальные пустые?

В любом случае, это неправильный способ обработки списка. Но обо всем по порядку. Эта строка не делает ничего полезного:

var imageSource = PictureDecoder.DecodeJpeg(imageStream);

Этот код должен работать (кажется), но может быть ошибка вне кода. Сколько раз эта функция вызывается и какие параметры передаются - вот что на самом деле имеет значение.

Но я бы изменил код для использования привязки данных и соответствующего ItemsSource.

  1. Создать класс для предметов

    public class MyImage 
    { 
        public string FilePath {get; set;} 
        public ImageSource LoadedSource {get; set;} 
    }
    
  2. Создайте ObservableCollection () и заполните его своими данными.

  3. Свяжите его с ListBox , установив ItemsSource
  4. Создание правильного шаблона элемента с изображением и привязкой:

    <Image Source={Binding LoadedSource}/>
    

Эта настройка поможет вам легко отладить проблемы и локализовать проблему. Вероятно, вы неправильно вызываете исходную функцию.

...