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