使用JsonConvert序列化图像

时间:2014-03-07 13:49:01

标签: c# json image windows-phone-8

我有一个有图像的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来获取图像并绑定它们。这样做的有效方法是什么?

1 个答案:

答案 0 :(得分:1)

您不会序列化图像,将其保存在隔离的存储中,然后将路径序列化为图像。

有关保存/加载图片的信息,请参阅http://www.geekchamp.com/tips/all-about-wp7-isolated-storage---read-and-save-images