在我使用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); });

但没有起作用。

有人能帮我吗?

感谢

在我使用WebClient获取一些数据后,Databind没有更新

另一个线程可能不是原因,因为DownloadStringCompleted事件处理程序正在创建WebClient的线程中运行(在这种情况下可能是UI线程)。

这可能是一个太明显的问题,但在尝试更新UI时,您是否在ViewModel中生成了INotifyPropertyChanged.PropertyChanged事件?