2010-12-14 3 views
0

Async XML Reading in Windows Phone 71つのxamlページから別のxamlページにナビゲートして値を渡すにはどうすればよいですか?ここでは、このトピックに幾分関連

私は、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; 

として格納された検索クエリを作成し、それをDownloadStringInBackground呼び出します。私の質問は、Navigateコマンド(NavigationService.Navigate(新しいUri( "/ Result.xaml"、UriKind.Relative)))をどこに置くことができますか?私はコールバックでそれをやってみましたが、staticキーワードのためにnullobject例外が発生します。 finalResultが実装されていることを確認するにはどうすればいいですか?また、Result.xamlにナビゲートして、そのページのfinalResultのデータを参照できます。代わりに、どうやってResult.xamlにWordsやfinalResultを渡すことができますか?探しているため

感謝:)ページ間で値を渡すことで、ここでのチュートリアルがあり

+0

私の問題について間違った方向に向かっていたことが分かります。適切なアプローチは次のとおりです。http://www.jaylee.org/post/2010/06/22/WP7Dev-Using-the-WebClient-with-Reactive-Extensions-for- Effective-Asynchronous-Downloads.aspx Iミックの答えを正しいものとしてマークするつもりです、それは私の元の質問に対する答えですから。みんな、ありがとう。 IMO – Freakishly

+0

ベストソリューション: http://stackoverflow.com/questions/4701566/passing-a-complex-object-to-a-page-while-navigating-in-a-wp7-silverlight-applica/15536​​127 #15536​​127 – radsdau

答えて

3

。あなたが使用することができます

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

をコールバック関数は静的でなければならない場合:あなたはコールバック関数の静的を行わない場合

How to: Perform Page Navigation on Windows Phone

+0

素晴らしいリンクですが、私の問題は解決しません:( – Freakishly

+0

nullオブジェクトの例外がどこで発生しているのかを明確に記述できますか? –

+0

DownloadStringCallbackでは、Navigateの直前のfinalResultの値は何ですか? )Navigateの直後にNavigateを呼び出すと、Navigateを中断して、非ヌルのコンテンツを見つけ出し、エラーなしでさらに実行することができます。 –

0

あなたがこれを行うことができますので、それを

Deployment.Current.Dispatcher.BeginInvoke(); 
+0

コールバから 'static'キーワードを削除した場合ck関数(DownloadStringCallback)を呼び出すと、次のようなエラーが表示されます。非静的フィールド、メソッド、またはプロパティDownloadStringCallbackにオブジェクト参照が必要です。 – Freakishly

関連する問題