在Windows Phone 7上用Silverlight序列化一个视图模型

本文关键字:一个 模型 视图 序列化 Phone Windows 上用 Silverlight | 更新日期: 2023-09-27 17:50:38

我有Windows Phone的Silverlight应用程序。当应用程序墓碑时,我想存储当前视图模型。首先,我在哪里存储视图模型?

  1. 手机应用程序服务(我不知道它什么时候存在/消亡)
  2. 隔离存储

我很确定我应该将我的视图模型存储在隔离的存储中。我的问题是,我得到一个错误,当我试图把它放在孤立的存储。错误提示:

类型'MyViewModel'无法序列化。考虑使用DataContractAttribute标记它,并使用DataMemberAttribute属性标记您想要序列化的所有成员。

我的问题是,我有很多成员在这个视图模型。同时,它有子对象,子对象也有成员。只是感觉这弄脏了我的代码。看起来很奇怪,我可以成功地将视图模型放置在PhoneApplicationService中而没有任何问题。但是,只有当我试图将其放入隔离存储中时才会出现此错误。

我如何克服这个?我只是想在墓碑化期间保留视图模型。谢谢!

在Windows Phone 7上用Silverlight序列化一个视图模型

如果应用在tombstone之后被终止,PhoneAppService State将不会保存数据。Iso存储是磁盘存储,而PhoneAppService。State只是一个暂态字典,可以在tombstone中幸存下来。

Jeff Prosise的真实世界墓碑在Silverlight for Windows Phone应该告诉你几乎所有你需要知道的关于墓碑的事情。

首先,您真的需要持久化整个VM吗?这可能是你的应用所需要的;但我仍然会要求您考虑只保留您绝对需要的部分,并根据需要重新实例化您的VM。也就是说,隔离存储是你可以把东西塞进持久化的地方。

您可以使用isolatedstoragessettings类来存储键值对类型数据。此外,请在这里查看墓碑的完整演练。在培训工具包中有一个IsolatedStorageHelper类,您可以使用。它使用Json序列化器/反序列化器,应该可以在大多数具有标准类型属性的类上工作。在Codeplex中也有一个墓碑帮助器,可能对你有用。

希望这对你有帮助!