1

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

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

所以这里有一个问题:
在这种情况下,我想保持第 2 页数据处于活动状态,这样我就不必每次从第 3 页返回时都重新初始化第 2 页。如果我可以在某处保留第 2 页的实例,那就太好了,并且每次我想从第 3 页回来时都使用它。到目前为止,我知道有两种方法,一种是在 Page2 xaml 中,我可以有类似的东西:

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

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

请分享你的想法,谢谢。

4

2 回答 2

2

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

于 2012-07-25T18:36:43.700 回答
1

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

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

只有当您调用 NavigationService.Navigate() 时才会创建一个新实例。

于 2012-07-25T18:35:59.580 回答