0

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

我有页面A,BC. 从 page A -> page B, pageA -> page C是可能的。

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

我怎样才能使它成为可能,我能否将一些标志数据从页面 B 发送回页面OnBackPressedA。如果是这样,我在哪里可以听以获取页面 A 中的标志数据。

4

2 回答 2

2

在你的App.xaml.cs创造public static PhoneApplicationPage PrevAppPage;

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

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

任何一种方法都应该有效

于 2012-10-08T12:35:06.733 回答
1

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

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

然后,在A's OnNavigatedTo方法中,您可以检查PreviousPageQueryString 的值,并在其值为 时做出相应的反应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,您可以检查该变量并查看前一页是什么(并在需要时重置变量,以免意外再次读取它)。

于 2012-10-08T11:52:33.693 回答