第一个是第一个,我是.NET的新手,我是用Visual Basic 6开发的,但现在我正在尝试为Windows Phone 8.0制作一个应用程序。
此时我被困(可能是简单的)问题。
我有一个带控件的xaml页面,它是LongListSelector的一部分,它实现了一个Observable Collection of" Prenda"类。
...
var prendasData = from r in db.Prendas select r;
PrendasItems = new ObservableCollection<Prenda>(prendasData);
llsPrendas.ItemsSource = PrendasItems;
...
XAML部分是下面的代码,拜托,我知道有些事情可能是错的,但我一个人学习,请耐心等待: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>
问题是图像控制。它没有显示任何内容,如果我调试它,消息的错误是:&#34; AG_E_NETWORK_ERROR&#34;,用Google搜索此错误,我知道(在这种情况下)与&#34相同;文件没有发现&#34。但我确定那个文件存在。因为我在IsoSoreSpy上看到它,在/Shared/Media/ShellContent/WP_XXX.jpg,我认为隔离存储的根被称为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 :(得分: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?
答案 1 :(得分:0)
我用Pratik Goyal帮助解决了这个问题(非常感谢!),在课堂上创建了一个BitmapImage属性&#34; Prendas&#34;,获取了Foto字符串数据。稍后我会更加小心处理异常控制,但我认为这是一个好的开始。
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;
}
答案 2 :(得分:0)
仅限孩子们:
Silverlight通过AG_E_NETWORK_ERROR / HRESULT = 0x80131500通知此情况。当然,在网络上的任何地方都找不到它,当然也意味着杰克和狗屎对我而言,不仅仅是对我而言。
答案 3 :(得分:-2)
是否会通知UI PrendaImageURI属性发生变化?
尝试添加
NotifyPropertyChanged("PrendaImageURI");
设置了Foto属性时。