页面之间的Windows Phone 8导航问题

我有一个带登录过程的Windows Phone应用程序,该登录过程访问外部API。 登录按钮的控制器最初运行了一些代码,这些代码立即导航到仪表板页面:

private void LogInButton_Click(object sender, RoutedEventArgs e) { ... App.RootFrame.Navigate(new Uri("/Interface.xaml", UriKind.RelativeOrAbsolute)); } 

这很好用!

稍后,我认为最好实现与api的实际连接,检查用户详细信息是否正确,然后重定向到仪表板。 为了简洁起见,我已经取出了api部分,但是让我们说这个函数作为Action委托在整个地方传递,然后在它被称为合法的地方,控制器之前被调用。

  ... // This method is also located in the controller class, but it is called by another class public void LoadDashboard( DataUpdateState data ) { //data.AsyncResponse App.RootFrame.Navigate(new Uri("/Interface.xaml", UriKind.RelativeOrAbsolute)); } 

问题是,导航方法现在不再有效,它会在RootFrame_NavigationFailed上触发调试中断。

我在这里不明白的是什么?

有没有办法找出它在App类中加载导航失败方法的原因

您可以在导航失败事件的NavigationFailedEventArgs中获取更多详细信息(在Exception参数中)。

最可能的原因是您尝试从非ui线程调用Navigate。 如果是这种情况只是使用调度程序在ui线程上调度它:

 Deployment.Current.Dispatcher.BeginInvoke(() => { App.RootFrame.Navigate(new Uri("/Interface.xaml", UriKind.RelativeOrAbsolute)); });