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:)

È stato utile?

Soluzione

C'è una procedura dettagliata qui sul passaggio di valori tra le pagine.

Procedura: Eseguire navigazione pagina su Windows Phone

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();
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top