1

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

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

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

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

谢谢。

4

1 回答 1

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 应该保留它的值,因为当从浏览器导航回来时,它将是页面的同一个实例。

于 2012-09-04T18:55:42.617 回答