我想在停用时保存应用程序的状态,因为在停用应用程序后激活应用程序时我的应用程序崩溃了,在停用逻辑删除过程中,某些对象的值不会保存。所以我提出了在停用时序列化对象的解决方案,并在激活时反序列化它们。我跟着文章http://onishimura.com/2010/07/25/windows-phone-7-tutorial-creating-a-simple-notes-app-with-silverlight-part-1/。
在序列化文件时,它给出了一个异常InvalidDataContractException,显示消息:
“类型'System.Windows.UIElement'无法序列化。请考虑使用DataContractAttribute属性对其进行标记,并使用DataMemberAttribute属性标记要序列化的所有成员。”
我想保存的类对象也有一些PhoneApplicationPage和Usercontrols对象。那么我该如何解决这个问题?
答案 0 :(得分:2)
您不能序列化任何C#对象类型,特别是任何Silverlight UI对象 - 这都是设计的。实际上,您应该仅在构建UI时序列化您所依赖的实际数据,然后在创建页面或导航到(*)时根据需要检索此数据。
链接的示例在其DataContract中不包含任何UIElements,只包含可序列化的字符串。
(*)该教程的第2部分实际上处理以这种方式加载数据。