2012-01-12 11 views
0

私はWindows Mobile Development(.net framework)もかなり新しく、この問題の解決策を見つけようとしています。いくつかの時間:WebClientを使用してデータを取得した後、Databindが更新されない

1 - 私はINotifyPropertyChangedの実装を、ViewModelに持っている人の私のリストが含まれています

public ObservableCollection<Person> listOfPeople; 

2 - 私はリストボックスにデータバインディングlistOfPeople午前。

3 - 私のMainPage.xaml.csにダミーデータをいくつか作成し、リストボックスを更新します。

4 - 問題は、ダウンロードしたRSSから人物情報を更新しようとするときです。すべての人物オブジェクトに対して、Person.updateData()メソッドを呼び出します。このメソッドは、rssフィードからいくつかの情報を取得します。

internal void updateData() 
     { 
      WebClient wc = new WebClient(); 
      wc.DownloadStringCompleted += new DownloadStringCompletedEventHandler(wc_DownloadStringCompleted); 
      wc.DownloadStringAsync(new Uri(sourceUrl)); 

     } 


     void wc_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e) 
     { 
      //Parse the data: 
       ... 

      //Try to update: 

       updateAge(age); 
       updateAddress(Address);     
      } 

     } 

そして値はクラスで更新されますが、UIでは更新されません。 私が検索した後、ハンドラがdiffスレッドで動作することがわかりました。おそらく問題です。 私は

Deployment.Current.Dispatcher.BeginInvoke(delegate { updateSeason(season); }); 

が、didntの仕事を試してみました。

誰でも手伝ってもらえますか?

DownloadStringCompletedイベントハンドラが(この場合はおそらく、UIスレッドで) WebClientが作成されたスレッドで実行されているので、あなたが

答えて

0

別のスレッドはおそらく理由ではありませんありがとうございます。

これはあまりにも明白な質問かもしれませんが、あなたはUIを更新しようとしているときにViewModelにINotifyPropertyChanged.PropertyChangedイベントを生成しましたか?

+0

こんにちは、助けのためのthx、しかしええ私はそれをしました。 UIは、wc_DownloadStringCompleted内以外の値を変更するために呼び出すと更新されます。私はmodelviewer、メインクラス、独自のPersonクラスの値を変更してテストしました。私がwc_DownloadStringCompletedの中でそれをしようとするときだけ、それはUIを更新しません。 – FC777

+0

@ user1146559 - より多くのコードを表示する必要があります。 – Pol

関連する問題