我在我的应用程序中使用了页面,让我只是为了您的理解而解释。
我有网页A,B
和C
。
来自第A -> page B
页,
页面A -> page C
是可能的。
我只有在页面A从页面B恢复而不是从页面C恢复时才需要执行操作。
如何才能实现,我能否将一些标志数据从页面B的OnBackPressed
发送回页面A.如果是这样,我可以在哪里听取第A页中的标志数据。
答案 0 :(得分:2)
在App.xaml.cs
创建public static PhoneApplicationPage PrevAppPage;
在Page b
和Page 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
中,您可以检查该变量并查看上一页的内容(如果需要,则重置变量,以免意外再次读取)。