在WP7中的3页应用程序中保存页面状态

时间:2011-10-20 11:12:26

标签: c# silverlight windows-phone-7 page-lifecycle

这是我在这里的第一个问题,就我搜索而言,我找不到解决问题的方法。我正在编写我的第一个WP7的rssreader应用程序,我正面临着页面状态的问题。我有3页,导航就是这样 主页>>> listitemspage>>> detailspage。主页是具有预配置的订阅源类别项(网址和名称)的数据绑定模型,listitempage是我实现webclient以读取订阅源项的页面,详细信息页面是我从listitempage传递所选订阅源项的详细信息的位置。在这些情况下工作的页面状态:

mainpage >>> start button >>> back button (OK)<br/>
listitempage >>> start button >>> back button (Doesn't work)<br/>
detailspage >>> start button >>> back button (OK)<br/>

在详细信息页面中,我使用OnNavigatedTo / From和State.TryGetValue保存页面状态 这似乎有效,但如果我创建一个带浏览器任务的按钮,那么用户可以在浏览器打开时导航到完整的文章,用户按下后退按钮,详细信息页面状态有效。如果用户第二次按下后退按钮,则应用程序退出而不是导航回listitempage。所以我也有这个问题:

detailspage >>> browserbuttontask >>> backbutton >>> restorepage >>> backbutton->exit<br/>

有什么想法吗?

3 个答案:

答案 0 :(得分:0)

我建议在Matt Lacey(Windows Phone用户组)编写的codeplex上使用Tombstone助手。

http://tombstonehelper.codeplex.com/

它可以非常轻松地解决您的所有问题,或者至少向您展示如何将您的页面状态写入隔离存储以供长期使用(请记住状态缓存仅在设备通电时才能存活,并且只要手机不需要清除它的内存)

希望这会有所帮助 RGDS 西蒙

答案 1 :(得分:0)

如果你想保存页面状态而不搞乱IsolatedStorage尝试SterlingDB。它使用IsolatedStorage,但设置和使用非常简单。你可以通过nuget添加英镑。您将不得不粘贴您希望在类中保留的数据,但保存和加载很简单。

除此之外,您还可以查看Caliburn Micro。它为您的ViewModel添加了页面生命周期,如OnInitialize,OnActivate,OnDeactivate。它还为WP7添加了一些不错的东西,比如在ViewModel到IsolatedStorage或手机状态下自动保持属性。

http://www.sterlingdatabase.com/

答案 2 :(得分:0)

听起来你的应用程序在将状态恢复到列表页面时会抛出异常,这会终止应用程序。

您是否尝试使用附加的调试器完成所有这些操作?它应该显示抛出的异常和位置。