从导航堆栈和WebBrowserTask中删除当前页面

时间:2012-07-31 10:22:44

标签: c# silverlight windows-phone

我有一个调用WebBrowserTask的页面。当用户从浏览器返回时,我不想显示启动任务的页面,而是显示前一个页面。

问题是导航堆栈不包含当前页面,我无法从页面中的条目中删除它,WebBrowserTask不允许我们做任何事情。

在Android上,我可以指定给定的Activity不要添加到后台堆栈中。有这样的事吗?

目前,我发现几乎做我想要的唯一方法是在调用任务时设置一个标志,并在页面的OnNavigatedTo处理程序中检查它。 但在返回之前,页面仍然可见几秒钟。这不好。

感谢。

1 个答案:

答案 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导航回来时它将是页面的同一个实例。