我怎样才能找到页面恢复?

时间:2012-10-08 11:40:11

标签: windows-phone-7 lifecycle

我在我的应用程序中使用了页面,让我只是为了您的理解而解释。

我有网页A,BC。 来自第A -> page B页, 页面A -> page C是可能的。

我只有在页面A从页面B恢复而不是从页面C恢复时才需要执行操作。

如何才能实现,我能否将一些标志数据从页面B的OnBackPressed发送回页面A.如果是这样,我可以在哪里听取第A页中的标志数据。

2 个答案:

答案 0 :(得分:2)

App.xaml.cs创建public static PhoneApplicationPage PrevAppPage;

Page bPage C构造函数中初始化它,并在onNavigatedTo事件的页面A上检查其值。并做各自的工作。

或者您可以创建enums并在页面构造函数中初始化它们并检查page A's onNavigatedTo事件中的值。

任何一种方法都应该起作用

答案 1 :(得分:1)

您可以使用QueryString。从B导航到A时,将您的QueryString添加到网址:

NavigationService.Navigate(new Uri("/PageA.xaml?PreviousPage=b", UriKind.Relative));

然后,在A's OnNavigatedTo方法中,您可以查看PreviousPage QueryString的值,并在其值为b时做出相应的反应。

protected override void OnNavigatedTo(NavigationEventArgs e)  
{
     base.OnNavigatedTo(e);

     string prevPage="";

     NavigationContext.QueryString.TryGetValue("PreviousPage", out prevPage);

     if(prevPage == "b")
     {
         //code to call if A is resuming from B
     }    
}

根据评论进行更新(将上面的代码保留给其他人)

BackKey有几个选项。首先,您可以使用上面的代码,然后从历史记录中删除该特定页面。您可以使用上面代码中的RemoveBackEntry方法执行此操作:

if(NavigationService.CanGoBack)
   NavigationService.RemoveBackEntry();

您可以在此处查看有关Back Stack的更多信息。

或者,您可以跟踪一个全局变量,例如App.xaml.cs,只要用户离开页面就会更新。然后,在A中,您可以检查该变量并查看上一页的内容(如果需要,则重置变量,以免意外再次读取)。