Windows Phone通过app生命周期持久实例化页面

时间:2012-07-25 17:47:40

标签: c# wpf silverlight windows-phone-7

我正在开发一个简单的Windows Phone应用程序,它基本上具有以下功能:

  • 第1页,有一个获取用户位置的按钮,并导航到第2页
  • 第2页,使用用户位置和地图控件显示地图,视图中心是用户的位置。有一个应用栏按钮可以导航到第3页。
  • 第3页,在此页面中显示一些附近的地方列表,一旦用户选择其中一个地点,它将返回到第2页,将地点固定在地图控件上。

所以这里有一个问题:
我希望在这种情况下保持第2页的数据存活,所以每次从第3页返回时我都不必重新初始化第2页。这将是完美的我可以保持某个地方的第2页的实例,并且每次我想从第3页返回时都使用它。到目前为止,我知道有两种方法,一种是在Page2 xaml中我可以有类似的东西:

<Page
  x:class "Page2.keepPageAlive"
  ...

另一个正在使用AddBackEntry。但我不确定哪一个适合我的情况,或者还有其他好方法。

请分享您的想法,谢谢。

2 个答案:

答案 0 :(得分:2)

只要您从page2导航到page3,并使用NavigationService.GoBack()返回page2,page2实例将保持活动状态。所以你基本上没什么可改变的。

答案 1 :(得分:1)

在WP7导航堆栈中,第2页仍然存在。因此,如果您从第1页导航到第2页到第3页,则存在所有3个页面。

如果从第3页调用NavigationService.GoBack(),它将弹出关闭并恢复先前的第2页实例,而不是创建第2页的新实例。这也是当您点击“返回”按钮时会发生的情况

只有在调用NavigationService.Navigate()时才会创建新实例。