在我使用WebClient获取一些数据后,Databind没有更新
本文关键字:Databind 更新 数据 WebClient 获取 | 更新日期: 2023-09-27 18:20:13
我对Windows Mobile Development(也是.net框架)还很陌生,很长一段时间以来,我一直在努力解决这个问题:
1-我有一个ViewModel,实现了包含我的人员列表的INotifyPropertyChanged:
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); });
但没有起作用。
有人能帮我吗?
感谢
另一个线程可能不是原因,因为DownloadStringCompleted
事件处理程序正在创建WebClient
的线程中运行(在这种情况下可能是UI线程)。
这可能是一个太明显的问题,但在尝试更新UI时,您是否在ViewModel中生成了INotifyPropertyChanged.PropertyChanged事件?