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页面而不是网页。
提前谢谢。
答案 0 :(得分:1)
我已经尝试了你的代码,它运行正常。 Here is my simple example。你可以在NavigationFailedEvent中导航 - 问题是你永远不会到达那里。
正如我所尝试的那样,问题主要与仿真器有关 - 可能是由于互联网连接的实现方式。例如:
web.Navigate(new Uri(@"http://nosite.azd", UriKind.Absolute));
这个导航在我的模拟器上没有失败(我被重定向到某个地方),但是当我在设备上测试它时 - 它失败了。
因此,请尝试在设备上测试您的应用。但IMO在导航(加载Webbrowser)之前检查互联网连接要好得多,而不是等待导航失败(可以进行额外的检查)。
当你的代码在主线程上运行时,你也不需要通过Dispatcher进行导航。