在 Windows Phone 8 上存储位图图像

本文关键字:存储 位图 图像 Windows Phone | 更新日期: 2023-09-27 17:56:45

我会存储一个元素列表,但是当我运行我的应用程序时,会出现异常

此例外的文本:

类型"System.Windows.Media.Imaging.WriteableBitmap"无法序列化。请考虑使用 DataContractAttribute 属性标记它,并使用 DataMemberAttribute 属性标记要序列化的所有成员。或者,可以确保该类型是公共的并且具有无参数构造函数 - 然后将序列化该类型的所有公共成员,并且不需要任何属性。

Element el = new Element();
el.Text = TextACoder.Text;
el.Date = DateTime.Now.ToShortDateString();
el.SourceImg = ImageQR.Source;
List<Element> ListElement = new List<Element>();
if(IsolatedStorageSettings.ApplicationSettings.Contains("ListEl"))
{
    ListElement = (List<Element>)IsolatedStorageSettings.ApplicationSettings["ListEl"];
    ListElement.Add(el);
    IsolatedStorageSettings.ApplicationSettings["ListEl"] = ListElement;
    IsolatedStorageSettings.ApplicationSettings.Save();
}
else
{
    ListElement.Add(el);
    IsolatedStorageSettings.ApplicationSettings["ListEl"] = ListElement;
    IsolatedStorageSettings.ApplicationSettings.Save();
}            

在 Windows Phone 8 上存储位图图像

当你分配到IsolatedStorageSettings.ApplicationSettings时,它会在后台序列化数据以将其保存到IsolatedStorageFile,例外是抱怨它不知道如何序列化WriteableBitmap类。 你可以存储WriteableBitmap数据的字节数组 - 这是如何将WriteableBitmap转换为byte[]并再次转换回来的方法(请注意,您必须分别存储宽度和高度)。

根据您正在执行的操作,您可以向类中添加byte[]字段,并且无论何时分配到SourceImg,还可以更新 byte[] 字段。 然后使用 NonSerialized 属性标记支持 SourceImg 属性的字段。