私は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
が作成されたスレッドで実行されているので、あなたが
こんにちは、助けのためのthx、しかしええ私はそれをしました。 UIは、wc_DownloadStringCompleted内以外の値を変更するために呼び出すと更新されます。私はmodelviewer、メインクラス、独自のPersonクラスの値を変更してテストしました。私がwc_DownloadStringCompletedの中でそれをしようとするときだけ、それはUIを更新しません。 – FC777
@ user1146559 - より多くのコードを表示する必要があります。 – Pol