我有一个有图像的viewmodel。当我序列化视图模型时,它不会将对象转换为任何东西。因此,当我反序列化时,我无法获得正确的视图模型。
视图模型:
public class ViewModel
{
public ViewModel(string imageUrl)
{
if (!string.IsNullOrEmpty(imageUrl))
{
IsImageLoading = true;
_img = new BitmapImage();
_img.ImageOpened += (s, e) => { IsImageLoading = false; };
_img.DownloadProgress += (s, e) => { DownloadProgress = e.Progress; };
_img.ImageFailed += (s, e) =>
{
IsImageLoading = false;
_img = new BitmapImage(new Uri("/Assets/Images/fwakes.png", UriKind.Relative));
NotifyPropertyChanged("Image");
};
_img.UriSource = new Uri(imageUrl, UriKind.RelativeOrAbsolute);
}
}
.....
BitmapImage _img;
public BitmapImage Image
{
get
{
return _img;
}
}
}
将对象序列化为存储:
public bool SaveItems(IEnumerable<ItemViewModel> source)
{
string jsonContents = JsonConvert.SerializeObject(source, Formatting.Indented);
那么我怎样才能正确序列化,以便图像的数据绑定不会出错。
我的项目的目标是,当我有互联网时,我会下载所有带有图像的viewmodel,当没有互联网时,我会反序列化viewmodel来获取图像并绑定它们。这样做的有效方法是什么?
答案 0 :(得分:1)
您不会序列化图像,将其保存在隔离的存储中,然后将路径序列化为图像。
有关保存/加载图片的信息,请参阅http://www.geekchamp.com/tips/all-about-wp7-isolated-storage---read-and-save-images。