Windows phone 7 如何找到已恢复的页面?

Windows phone 7 如何找到已恢复的页面?,windows-phone-7,lifecycle,Windows Phone 7,Lifecycle,我在我的应用程序中使用页面,让我简单地解释一下,以供您理解 我有A、B和C页面。 从第A->B页, 页面A->页面C是可能的 只有当a页从B页恢复而不是从C页恢复时,我才需要执行操作 我如何才能做到这一点,我是否能够将一些标志数据从B页的on backpressed发送回A页。如果是这样的话,我在哪里可以收听到A页中的标志数据。您可以使用。从B导航到A时,将您的查询字符串添加到URL: NavigationService.Navigate(new Uri("/PageA.xaml?Previou

我在我的应用程序中使用页面,让我简单地解释一下,以供您理解

我有
A、B
C
页面。 从第
A->B页,
页面
A->页面C
是可能的

只有当a页从B页恢复而不是从C页恢复时,我才需要执行操作

我如何才能做到这一点,我是否能够将一些标志数据从B页的
on backpressed
发送回A页。如果是这样的话,我在哪里可以收听到A页中的标志数据。

您可以使用。从
B
导航到
A
时,将您的查询字符串添加到URL:

NavigationService.Navigate(new Uri("/PageA.xaml?PreviousPage=b", UriKind.Relative));
然后,在
A的
on导航到
方法中,您可以检查
上一页
查询字符串的值,如果其值为
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
     }    
}
根据评论进行更新(将上述代码留给其他人)

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

if(NavigationService.CanGoBack)
   NavigationService.RemoveBackEntry();
你可以在这里看到更多关于这个项目的信息

或者,您可以在
App.xaml.cs
中跟踪全局变量,例如,每当用户离开页面时,该变量都会更新。然后,在
A
中,您可以检查该变量并查看上一页是什么(如果需要,可以重置该变量,以避免意外再次读取)

您可以使用。从
B
导航到
A
时,将您的查询字符串添加到URL:

NavigationService.Navigate(new Uri("/PageA.xaml?PreviousPage=b", UriKind.Relative));
然后,在
A的
on导航到
方法中,您可以检查
上一页
查询字符串的值,如果其值为
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
     }    
}
根据评论进行更新(将上述代码留给其他人)

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

if(NavigationService.CanGoBack)
   NavigationService.RemoveBackEntry();
你可以在这里看到更多关于这个项目的信息


或者,您可以在
App.xaml.cs
中跟踪全局变量,例如,每当用户离开页面时,该变量都会更新。然后,在
A
中,您可以检查该变量并查看上一页是什么(如果需要,可以重置该变量,以避免意外再次读取)

在你的
App.xaml.cs
create
publicstaticphoneapplicationpage-prevappage

第b页
第C页
构造函数中初始化它,并在
on导航的A页上初始化它,以检查它的值。各司其职

或者,您可以创建
枚举
并在页面构造函数中初始化它们,然后检查
页面A的onNavigatedTo
事件中的值


在你的
App.xaml.cs
create
publicstaticphoneapplicationpage-prevappage中,这两种方法都应该有效

第b页
第C页
构造函数中初始化它,并在
on导航的A页上初始化它,以检查它的值。各司其职

或者,您可以创建
枚举
并在页面构造函数中初始化它们,然后检查
页面A的onNavigatedTo
事件中的值


这两种方法都应该有效

NavigationService.Navigate(新Uri(“/PageA.xaml?PreviousPage=b”,UriKind.Relative));-->这将添加一个新页面,堆栈中将有两个页面,对吗?我需要销毁B页,然后返回A页。@arnp啊,是的,对不起,我忘了你想通过back键获得它。我已经更新了post.NavigationService.Navigate(新Uri(“/PageA.xaml?PreviousPage=b”,UriKind.Relative));-->这将添加一个新页面,堆栈中将有两个页面,对吗?我需要销毁B页,然后返回A页。@arnp啊,是的,对不起,我忘了你想通过back键获得它。我已经更新了帖子。