2014-10-07 63 views
0

第一个是第一个,我在.NET上很新手,我是用Visual Basic 6开发的,但现在我正在试图制作一个应用程序到Windows Phone 8.0。XAML,图像控制,本地存储图像

在这个时候我陷入了一个(也许很简单)的问题。

我有一个带控件的xaml页面,它是LongListSelector的一部分,它实现了“Prenda”类的Observable集合。

 ... 
     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”,Google搜索了这个错误,我知道这是(在这种情况下)与“找不到文件”相同。但我确定这个文件存在。因为我在/Shared/Media/ShellContent/WP_XXX.jpg上看到了IsoStoreSpy,我认为隔离存储的根被称为isostore:/并且完整的URI必须是:isostore:/ Shared/Media/ShellContent/WP_XXX .JPG。

该字符串被保存为类中的字符串列,并且我创建了一个属性,使用该字符串在设计时使Uri用于绑定Image控件的Source属性。

(类声明的一部分)

  [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属性更改是否被通知到UI?

尝试增加

NotifyPropertyChanged("PrendaImageURI"); 

当你的图片属性设置。

0

我用Pratik Goyal的帮助(非常感谢你!)解决了这个问题,在类“Pre中创建一个BitmapImage属性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。当然在网络上的任何地方都找不到,当然也意味着插孔和狗屎,而不仅仅是我。