在Windows Phone 7上的Silverlight中序列化视图模型

| 我有适用于Windows Phone的Silverlight应用程序。当应用程序成为逻辑删除时,我想存储当前的视图模型。首先,我在哪里存储视图模型? 电话应用程序服务(我不知道它何时存/死) 隔离存储 我非常确定我应该将视图模型存储在隔离的存储中。我的问题是,当我尝试将其放入隔离存储区时出现错误。错误提示: 类型\'MyViewModel \'无法序列化。考虑使用DataContractAttribute标记它,并使用DataMemberAttribute属性标记要序列化的所有成员。 我的问题是,此视图模型中有很多成员。同时,它还具有具有成员的子对象。感觉就像弄脏了我的代码。我可以毫无问题地将视图模型成功放置在PhoneApplicationService中,这似乎很奇怪。但是,只有在尝试将其放入隔离存储中时才会出现此错误。 我该如何克服呢?我只想在逻辑删除期间保留视图模型。谢谢!
已邀请:
Jeff Prosise在Windows Phone的Silverlight中进行的真实世界中的墓碑化应该告诉您几乎所有需要了解的有关墓碑化的知识。
如果应用程序被逻辑删除后一段时间终止,PhoneAppService状态将不会保留数据。 Iso存储是磁盘存储,而PhoneAppService.State只是一个临时状态字典,可以保留逻辑删除。
首先,您是否真的需要保留整个VM?这可能是您的应用程序所需的;但是我仍然会要求您考虑只保留绝对需要的位,并根据需要重新实例化您的VM。就是说,“隔离存储”是您可以持久化的地方。 您可以使用IsolatedStorageSettings类存储键值对类型数据。另外,请参阅此处以获取完整的墓碑演练。您可以使用该培训工具包中的IsolatedStorageHelper类。它使用Json序列化器/反序列化器,并且应可用于具有标准类型属性的大多数类。这里的Codeplex中还有一个Tombstone助手,可能对您有用。 希望这可以帮助!

要回复问题请先登录注册