我有一个调用WebBrowserTask的页面。当用户从浏览器返回时,我不想显示启动任务的页面,而是显示前一个页面。
问题是导航堆栈不包含当前页面,我无法从页面中的条目中删除它,WebBrowserTask不允许我们做任何事情。
在Android上,我可以指定给定的Activity不要添加到后台堆栈中。有这样的事吗?
目前,我发现几乎做我想要的唯一方法是在调用任务时设置一个标志,并在页面的OnNavigatedTo处理程序中检查它。 但在返回之前,页面仍然可见几秒钟。这不好。
感谢。
答案 0 :(得分:0)
我没有对此进行测试,但您可以执行以下操作
bool navigatedFromBrowser;
public MainPage()
{
navigatedFromBrowser = false;
}
public void someMethod()
{
WebBrowserTask webBrowserTask = new WebBrowserTask();
webBrowserTask.Uri = new Uri("http://msdn.microsoft.com", UriKind.Absolute);
webBrowserTask.Show();
navigatedFromBrowser = true;
}
protected override void OnNavigatedFrom(System.Windows.Navigation.NavigationEventArgs e)
{
if(navigatedFromBrowser && NavigationService.CanGoBack)
{
navigatedFromBrowser = false;
NavigationService.GoBack();
}
}
这可能是一种丑陋的方式,但它可能会奏效。 navigatedFromBrowser应该保留它的值,因为当它从broswer导航回来时它将是页面的同一个实例。