0

此处与此主题有些相关: Windows Phone 7 中的异步 XML 读取

我正在开发一个 Windows Phone 应用程序,并且我的 Search.xaml.cs 文件中有一个搜索功能。通过单击按钮调用它,它创建一个搜索查询并用它调用 DownloadStringInBackground

    private void SearchQuery(object sender, EventArgs e)
    {
        string temp = "http://api.search.live.net/xml.aspx?Appid=myappid&query=randomqueryhere&sources=web";
        DownloadStringInBackground(temp);
    }

    public static void DownloadStringInBackground(string address)
    {
        WebClient client = new WebClient();
        Uri uri = new Uri(address);

        client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(DownloadStringCallback);
        client.DownloadStringAsync(uri);
    }

    private static void DownloadStringCallback(Object sender, DownloadStringCompletedEventArgs e)
    {
        // Fancy manipulation logic here

        finalResult = words;
    }

finalResult 已存储为

public static string[] finalResult;

在搜索类中。我的问题是,我可以在哪里放置导航命令 (NavigationService.Navigate(new Uri("/Result.xaml", UriKind.Relative));)?我尝试在回调中执行此操作,但由于 static 关键字,我得到了一个 nullobject 异常。如何确保已填充 finalResult,并且可以导航到 Result.xaml 并在该页面上引用 finalResult 中的数据。或者,如何将 Words 或 finalResult 传递给 Result.xaml?

谢谢你看:)

4

2 回答 2

3

这里有一个关于在页面之间传递值的演练。

如何:在 Windows Phone 上执行页面导航

于 2010-12-14T10:34:54.267 回答
0

如果你不使回调函数静态,你可以这样做:

Dispatcher.BeginInvoke(() => NavigationService.Navigate(new Uri("/Result.xaml", UriKind.Relative)));

如果回调函数必须是静态的,您可以使用:

Deployment.Current.Dispatcher.BeginInvoke();
于 2010-12-14T10:39:05.247 回答