Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 可观察收集<;位图图像>;数据序列化不序列化_C#_.net_Windows Phone 7 - Fatal编程技术网

C# 可观察收集<;位图图像>;数据序列化不序列化

C# 可观察收集<;位图图像>;数据序列化不序列化,c#,.net,windows-phone-7,C#,.net,Windows Phone 7,我有一个类,它存储BitmapImage的ObservableCollection,我需要将此信息存储在IsolatedStorage中。我使用DataContract来处理其他类的工作。我认为不能将BitmapImage设置为DataMember会阻止它工作 错误消息是: 无法序列化类型“System.Windows.Media.ImageSource”。考虑使用DATACONTractAttor属性对其进行标记,并标记要使用DATAMEMBAREATE属性序列化的所有成员。 任何帮助都将不胜

我有一个类,它存储BitmapImage的ObservableCollection,我需要将此信息存储在IsolatedStorage中。我使用DataContract来处理其他类的工作。我认为不能将BitmapImage设置为DataMember会阻止它工作

错误消息是:

无法序列化类型“System.Windows.Media.ImageSource”。考虑使用DATACONTractAttor属性对其进行标记,并标记要使用DATAMEMBAREATE属性序列化的所有成员。

任何帮助都将不胜感激

代码-保存到IsolatedStorage

public static void AddOrUpdateUnsavedItems(string key, List<ProcessClass> unsavedItems)
    {
        var store = IsolatedStorageFile.GetUserStoreForApplication();
        if (store.FileExists("unsaveditem"))
        {
            store.DeleteFile("unsaveditem");
        }
        using (var stream = new IsolatedStorageFileStream("unsaveditem", FileMode.OpenOrCreate, FileAccess.Write, store))
        {
            DataContractSerializer dcs = new DataContractSerializer(typeof(List<ProcessClass>));
            dcs.WriteObject(stream, unsavedItems);
        }

    }
公共静态void AddOrUpdateUnsavedItems(字符串键,列出未保存项)
{
var store=IsolatedStorageFile.GetUserStoreForApplication();
如果(store.FileExists(“unsaveditem”))
{
store.DeleteFile(“未保存项”);
}
使用(var stream=new-IsolatedStorageFileStream(“unsaveditem”,FileMode.OpenOrCreate,FileAccess.Write,store))
{
DataContractSerializer dcs=新的DataContractSerializer(类型(列表));
dcs.WriteObject(流、未保存项);
}
}
代码类

[DataContract]
public class ProcessClass
{       
    ObservableCollection<BitmapImage> images = new ObservableCollection<BitmapImage>();
    [DataMember]
    public ObservableCollection<BitmapImage> Images
    {
        get { return images; }
        set { images = value; }
    }
    [DataMember]
    public string Notes { get; set; }
    [DataMember]
    public string ItemID { get; set; }
}
[DataContract]
公共类ProcessClass
{       
ObservableCollection图像=新的ObservableCollection();
[数据成员]
公众可观测采集图像
{
获取{返回图像;}
设置{images=value;}
}
[数据成员]
公共字符串注释{get;set;}
[数据成员]
公共字符串ItemID{get;set;}
}

BitmapImage无法使用数据协定进行序列化,您自己无法更改


保存
位图图像
(该图像)的唯一方法是使用
BinaryWriter
WriteableBitmap
。用于将位图图像转换为字节[]的图像转换器也会有所帮助。

使用WritableBitmap和Extensions.SaveJpeg将列表转换为字节[]。似乎储蓄得很好