1

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

    private void LogInButton_Click(object sender, RoutedEventArgs e)
    {
        ...

        App.RootFrame.Navigate(new Uri("/Interface.xaml", UriKind.RelativeOrAbsolute));
    }

这很好用!

后来,我认为最好实现与 api 的实际连接,检查用户详细信息是否正确,然后重定向到仪表板。为简洁起见,我已经删除了 api 部分,但是假设这个函数在被调用到它的正确位置之前,作为一个动作委托在各处传递,控制器..

    ...
    // 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 类中加载了导航失败的方法

4

1 回答 1

2

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

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

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

            });
于 2013-09-18T22:50:16.393 回答