Как мне перейти с одной страницы XAML к другой и передать значения?

StackOverflow https://stackoverflow.com/questions/4438056

Вопрос

В некоторой степени связан с этой темой здесь:Async XML чтение в Windows Phone 7

Я разрабатываю приложение Windows Phone, и у меня есть функция поиска в моем файле search.xaml.cs. Он вызван, нажав кнопку, создает поисковый запрос и вызывает загрузку

    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;

в классе поиска. Мой вопрос: куда я могу поместить команду navigate (navigationservice.navigate (new uri ("/result.xaml", urikind.relative)););)? Я попытался сделать это в обратном вызове, но я получаю исключение Nullobject из -за статического ключевого слова. Как я могу гарантировать, что FinalResult был заполнен, и что я могу перейти к Result.xaml и ссылаться на данные в FinalResult на этой странице. Альтернативно, как я могу передать слова или FinalResult в результате.xaml?

Спасибо, что посмотрели :)

Это было полезно?

Решение

Здесь есть прохождение по прохождению значений между страницами.

Как: выполнить навигацию на странице на Windows Phone

Другие советы

Если вы не сделаете функцию обратного вызова статичной, вы можете сделать это:

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

Если функция обратного вызова должна быть статичной, вы можете использовать:

Deployment.Current.Dispatcher.BeginInvoke();
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top