2014-10-07 2 views
0

Первый - это первый, я очень новичок в .NET, у меня был разработан un Visual Basic 6, но теперь я пытаюсь сделать приложение для Windows Phone 8.0.XAML, управление изображениями, местное хранилище image

В это время я попал в ловушку (возможно, простую) проблему.

У меня есть страница xaml с контролем, и она является частью LongListSelector, которая реализует Observable Collection класса Prenda.

 ... 
     var prendasData = from r in db.Prendas select r; 
     PrendasItems = new ObservableCollection<Prenda>(prendasData); 
     llsPrendas.ItemsSource = PrendasItems; 
     ... 

Часть XAML является кодом ниже, пожалуйста, я знаю, что severals вещи, может быть, это неправильно, но я учусь в одиночку, будьте терпеливы со мной: D

 <phone:LongListSelector x:Name="llsPrendas" Margin="0,0,-12,0" ItemsSource="{Binding Prendas}" SelectionChanged="llsPrendasSelectionChanged"> 
       <phone:LongListSelector.ItemTemplate> 
        <DataTemplate> 
         <StackPanel> 
          <Image Width="100" Height="100" Margin="5,0,0,0" Source="{Binding PrendaImageURI}" ImageFailed="errcargaimg"/> 
          <StackPanel Orientation="Vertical"> 
           <TextBlock FontWeight="Normal" Text="{Binding Nombre}" Margin="10,0,0,0" /> 
           <TextBlock FontWeight="Normal" Text="{Binding Precio}" Margin="10,0,0,0" />         
          </StackPanel> 
         </StackPanel> 
        </DataTemplate> 
       </phone:LongListSelector.ItemTemplate> 
      </phone:LongListSelector> 

Проблема заключается в Управление изображением. Он ничего не показывает, и если я его отлаживаю, то сообщение об ошибке: «AG_E_NETWORK_ERROR», googled эта ошибка, и я знаю, что это (в этом случае) то же самое, что и «Файл не найден». Но я уверен, что файл существует. потому что я видел его с помощью IsoStoreSpy, в /Shared/Media/ShellContent/WP_XXX.jpg, я думаю, что корень изолированного хранилища называется isostore: /, а полный URI должен быть: isostore:/Shared/Media/ShellContent/WP_XXX .jpg.

Эта строка сохраняется как строковый столбец в классе, и я создаю свойство, использующее эту строку, чтобы заставить Uri использовать для привязки свойства Source управления Image во время разработки.

(часть объявления класса)

  [Column] 
      public string Foto 
      { 
       get 
       { 
        return foto; 
       } 
       set 
       { 
        if (foto != value) 
        { 
         foto = value; 
         NotifyPropertyChanged("Foto"); 
        } 
       } 
      } 
      public Uri PrendaImageURI 
      { 
       get 
       { 
        return new Uri(this.Foto, UriKind.Absolute); 
       } 
      } 

я схожу с ума, потому что я не могу понять, почему это не работает. Может кто-нибудь мне помочь? (Извините за мой плохой английский)

ответ

0

Вы не можете прочитать из изолированного хранилища с использованием URI, Вы должны читать с помощью IsolatedStorageFile класс:

private static BitmapImage GetImageFromIsolatedStorage(string imageName) 
{ 
    var bimg = new BitmapImage(); 
    using (var iso = IsolatedStorageFile.GetUserStoreForApplication()) 
    { 
     using (var stream = iso.OpenFile(imageName, FileMode.Open, FileAccess.Read)) 
     { 
      bimg.SetSource(stream); 
     } 
    } 
    return bimg; 
} 

Вы можете найти более подробную информацию из ниже Сообщений:

How get image from isolated storage

How to load an image from isolated storage into image control on windows phone?

-2

Является ли пользовательский интерфейс уведомлением об изменении свойства PrendaImageURI?

Попробуйте добавить

NotifyPropertyChanged("PrendaImageURI"); 

когда ваше Фото свойство установлено.

0

Я решил его с помощью помощи Пратика Гойля (спасибо, очень!), Создав свойство BitmapImage в классе «Pre ndas ", взяв данные в строке« Фото ». Позже я буду более осторожен с контролем за исключениями, но, думаю, это хорошее начало.

public BitmapImage ImageFoto 
    { 
     get 
     { 
      return GetImageFromIsolatedStorage(Foto); 
     } 

    } 
    public BitmapImage GetImageFromIsolatedStorage(string imageName) 
    { 

     var bimg = new BitmapImage(); 
     using (var iso = IsolatedStorageFile.GetUserStoreForApplication()) 
     { 
      using (var stream = iso.OpenFile(imageName, FileMode.Open, FileAccess.Read)) 
      { 
       bimg.SetSource(stream); 
      } 
     } 
     return bimg; 
    } 
0

Только для детей:

Silverlight уведомляет это с AG_E_NETWORK_ERROR/HRESULT = 0x80131500. Который, конечно, не может быть найден нигде в Интернете, и, конечно же, это означает, что я и сам дерьмо, и не только для меня.

Смежные вопросы