是否可以从webbrowser NavigationFailed事件导航?

时间:2014-04-01 17:15:05

标签: c# windows-phone-8 windows-phone

private void webBrowser_NavigationFailed(object sender, NavigationFailedEventArgs e)
    {
        Debug.WriteLine("Navigation Failed");

        if (!Utils.IsNetworkAvailable())
        {
            MessageBoxResult result = MessageBox.Show("Please go to Settings and enable your network connection.",
                                                 "No network connection", MessageBoxButton.OK);

            if (result == MessageBoxResult.OK)
            {                    
                Dispatcher.BeginInvoke(() => 
                    NavigationService.Navigate(new Uri("/TutorialPage.xaml", UriKind.Relative))); //TODO: Doesnt work
            }
        }
}

这可能吗?我想转到上一个xaml页面而不是网页。

提前谢谢。

1 个答案:

答案 0 :(得分:1)

我已经尝试了你的代码,它运行正常。 Here is my simple example。你可以在NavigationFailedEvent中导航 - 问题是你永远不会到达那里。

正如我所尝试的那样,问题主要与仿真器有关 - 可能是由于互联网连接的实现方式。例如:

web.Navigate(new Uri(@"http://nosite.azd", UriKind.Absolute));

这个导航在我的模拟器上没有失败(我被重定向到某个地方),但是当我在设备上测试它时 - 它失败了。

因此,请尝试在设备上测试您的应用。但IMO在导航(加载Webbrowser)之前检查互联网连接要好得多,而不是等待导航失败(可以进行额外的检查)。

当你的代码在主线程上运行时,你也不需要通过Dispatcher进行导航。