Как мне перейти с одной страницы XAML к другой и передать значения?
-
09-10-2019 - |
Вопрос
В некоторой степени связан с этой темой здесь: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?
Спасибо, что посмотрели :)
Решение
Здесь есть прохождение по прохождению значений между страницами.
Другие советы
Если вы не сделаете функцию обратного вызова статичной, вы можете сделать это:
Dispatcher.BeginInvoke(() => NavigationService.Navigate(new Uri("/Result.xaml", UriKind.Relative)));
Если функция обратного вызова должна быть статичной, вы можете использовать:
Deployment.Current.Dispatcher.BeginInvoke();