我需要绑定位于隔离存储中的图像-
我在这里找到一个答案,看来我的处境
Binding image in Isolated Storage
但是后来这个人切换到了另一个解决方案,并使用ClientBin进行图像存储.我的照片一直都不同.
现在,我使用来自服务器的图像,但需要将其保存到隔离存储中并绑定到listBox.
XAML中的代码:
图片宽度=“ 110” CacheMode =“ BitmapCache”源=“ {Binding ThumbURL}”
后面的代码:
public string ThumbURL
{
get
{
return String.Format("http://localhost:3041/Pictures/thumbs/{0}.jpg", _ID);
}
set
{
this.OnThumbURLChanging(value);
this._ThumbURL = value;
this.OnThumbURLChanged();
this.OnPropertyChanged("ThumbURL");
}
}
谁能建议我该怎么做?我会非常非常感激.
请发布一些代码示例.
解决方法:
要从网上下载图片,请参阅前面的SO问题-how-can-i-download-and-save-images-from-the-web.
在独立存储中绑定图像的区别在于,必须绑定到从绑定代码对象初始化的BitmapImage对象.我已将您的媒体资源从“ ThumbURL”重命名为“ ThumbImage”,以显示差异.
因此在XAML中:
Image Width="110" CacheMode="BitmapCache" Source="{Binding ThumbImage}"
在您的绑定对象中-假设此图片不变-如果确实如此,则必须适当地引发属性更改事件. (已编辑代码以处理类序列化问题).
private string _thumbFileName;
public string ThumbFileName
{
get
{
return _thumbFileName;
}
set
{
_thumbFileName = value;
OnNotifyChanged("ThumbFileName");
OnNotifyChanged("ThumbImage");
}
}
[IgnoreDataMember]
public BitmapImage ThumbImage
{
get
{
BitmapImage image = new BitmapImage();
IsolatedStorageFile isoStore = IsolatedStorageFile.GetUserStoreForApplication();
string isoFilename = ThumbFileName;
var stream = isoStore.OpenFile(isoFilename, System.IO.FileMode.Open);
image.SetSource(stream);
return image;
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void OnNotifyChanged(string propertyChanged)
{
var eventHander = PropertyChanged;
if (eventHander != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyChanged));
}
}
(编辑后添加了如何首先下载图像的链接)