Come faccio a navigare da una pagina XAML ad un altro, e passare i valori?
-
09-10-2019 - |
Domanda
Un po 'legato a questo argomento qui: Async Reading XML in Windows Phone 7
sto sviluppando un telefono Windows app, e ho una funzione di ricerca nel mio file Search.xaml.cs. Si chiama facendo clic su un pulsante, si crea una query di ricerca e chiama DownloadStringInBackground con esso
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 è stato memorizzato come
public static string[] finalResult;
nella classe di ricerca. La mia domanda è, dove posso mettere il comando Naviga (NavigationService.Navigate (new Uri ( "/ Result.xaml", UriKind.Relative));)? Ho provato a fare nella richiamata, ma ottengo un'eccezione nullobject a causa della parola chiave static. Come posso garantire che finalResult è stata popolata, e che posso navigare Result.xaml e fare riferimento i dati in finalResult in quella pagina. In alternativa, come posso passare Parole o finalResult a Result.xaml?
Grazie per lo sguardo:)
Soluzione
C'è una procedura dettagliata qui sul passaggio di valori tra le pagine.
Altri suggerimenti
Se non si effettua la funzione di callback statica si può fare questo:
Dispatcher.BeginInvoke(() => NavigationService.Navigate(new Uri("/Result.xaml", UriKind.Relative)));
Se la funzione di callback deve essere statica è possibile utilizzare:
Deployment.Current.Dispatcher.BeginInvoke();