Windows Phone 7中的墓碑策略,如何保存多个页面的状态

时间:2011-07-26 13:12:34

标签: windows-phone-7 tombstoning

我想知道你在Windows Phone 7(wp7)应用中保存状态的策略是什么。当我说状态时,我的意思是堆栈中每个页面的模型视图状态。

最近,我在problems with tombstoning in WP7, cannot tell if i need to restore or instantiate/query new data问了一个问题,解决方案有效。但是,这种方法似乎只是临时和/或页面特定的。代码不保存它前面的页面的状态。

我的理解是,当应用程序被激活或停用时,您应该分别处理应用程序状态的恢复或备份。为App.xaml.cs生成的代码隐藏生成方法

private void Application_Activated(object sender, ActivatedEventArgs e)
private void Application_Deactivated(object sender, DeactivatedEventArgs e)

我们如何利用这些方法在逻辑删除时保存应用程序的完整状态?我还没有在网上找到一个好的教程。

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

在实践中,您可能会忘记这些方法。你不应该把墓碑描述为持久状态,更像是持久化数据。

你显然无法将整个应用程序的状态神奇地墓碑化。一般而言,页面的UI状态只能是单个页面的已知状态。

您需要做的是弄清楚您希望保留哪些UI状态(如果有),然后将这些数据与数据(显然)一起保存在PhoneApplicationService.State或IsolatedStorage.ApplicationSettings中(具体取决于数据)。

对于ViewModels,它们很容易被破坏。只需添加代码以检查逻辑删除的实例是否存在,然后在创建时加载viewmodel的数据。如果您将所有UI设置绑定到您的viewmodel,那么您就非常了不起。

上一个问题的代码可以在ViewModels构造函数中使用,结果几乎相同。要不断地持久化ViewModel,只需为PropertyChanged附加一个本地处理程序,并在每次调用时保存ViewModel的状态。