2

我正在尝试从某个处理服务器 API 的类导航到另一个页面(使用 UriMapping),但它不起作用。这是我的代码:

public void processResponce(item Response)
{
    try
    {
        var token = Response.result.token;
        this.setToken("&token=" + token);
        Debug.WriteLine(this.apiUrl);

        (Application.Current.RootVisual as PhoneApplicationFrame).Navigate(new Uri("/listItems", UriKind.Relative));
    }
    catch
    {
        Deployment.Current.Dispatcher.BeginInvoke(() =>
            {
                var messageFromServer = Response.error.message;
                MessageBox.Show(messageFromServer);

                Debug.WriteLine(messageFromServer);
            });
    }
}

SDK一直说,该文件不存在。但是如果我从某个类调用 Navigate(),附加到视图(fe,MainPage.xaml.cs),那么导航成功。任何人都可以帮忙吗?

UPD。我有多个 *.xaml 页面,但这个类没有直接连接到另一个页面。现在,这个类名为“JSON-RPC”。我尝试了不同的方法来解决我的问题(甚至将他命名为“公共部分 JSON-RPC:PhoneApplicationPage”),但是......问题是:如果我将从某个类调用 Navigate(),附加到 *.xaml 页面(在解决方案资源管理器,它像树一样显示 - *.xaml 页面 -> pagename.xaml.cs),然后它就可以工作了;如果我从我的 JSON-RPC 类中调用 Navigate(),那么它总是说“找不到文件”。

UPD2。解决方案: 有时我觉得自己是个傻瓜。答案是:

  Deployment.Current.Dispatcher.BeginInvoke(() =>
             {
                  (Application.Current.RootVisual as PhoneApplicationFrame).Navigate(new Uri("/listItems", UriKind.Relative));
             });

我们需要调用 Dispatcher 来解决这个问题。

4

2 回答 2

0

确保:

  • 您在 uri 末尾包含“.xaml”扩展名。
  • 您完全指定文件的路径(对于 /listItems,请确保 listItems.xaml 位于应用程序的根目录中)。
  • xaml 文件的构建操作设置为“页面”。

另外:您可以使用 RootFrame 代替 RootVisual。

这是一个对我有用的例子:

App.Current.RootFrame.Navigate(new Uri("/Pages/Error.xaml?Message=Application error", UriKind.Relative));
于 2011-08-07T16:47:53.610 回答
0

有时我觉得自己像个傻瓜。答案是:

  Deployment.Current.Dispatcher.BeginInvoke(() =>
             {
                  (Application.Current.RootVisual as PhoneApplicationFrame).Navigate(new Uri("/listItems", UriKind.Relative));
             });

我们需要调用 Dispatcher 来解决这个问题。

于 2011-08-08T02:55:54.047 回答