我有一个带登录过程的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类中加载导航失败方法的原因
答案 0 :(得分:2)
您可以在导航失败事件的NavigationFailedEventArgs中获取更多详细信息(在Exception参数中)。
最可能的原因是您尝试从非ui线程调用Navigate。如果是这种情况只是使用调度程序在ui线程上发送它:
Deployment.Current.Dispatcher.BeginInvoke(() =>
{
App.RootFrame.Navigate(new Uri("/Interface.xaml", UriKind.RelativeOrAbsolute));
});