可观察集合不会更新数据

本文关键字:更新 数据 观察 集合 | 更新日期: 2023-09-27 18:33:04

我在使用可观察集合时遇到问题,因为它没有更新我的视图。 它正在获取数据 我已经检查过了。 我也使事件成为其集合更改的事件,但它也没有被调用。 我不知道为什么会发生这种情况,这是我的代码。

public async Task GetActivityStudentCollection()
    {
        StudentActivityCollection =  await ViewModelLocator.ActivityViewModel.GetActivity(0, 8, 0, 20);
        StudentActivityCollection.CollectionChanged += StudentActivityCollection_CollectionChanged;
   //     RaisePropertyChanged("StudentActivityCollection");
    }
    void StudentActivityCollection_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
    {
      //  throw new NotImplementedException();
    }

我已经像这样将这个集合与列表视图绑定在一起。

 ActivityListViewSource.Source = ViewModelLocator.DashBoard.StudentActivityCollection;

这个ViewModelLocator.ActivityViewModel.GetActivity(0, 8, 0, 20);方法返回一个集合,我已经绑定了(不起作用),但是如果我将集合直接绑定到将要返回的集合,它可以工作。意味着如果我像这样绑定(它有效)。

ActivityListViewSource.Source = ViewModelLocator.ActivityViewModel.ActivityCollection;

很抱歉我的英语不好,请尝试理解问题。是因为异步方法还是什么。任何帮助都值得赞赏。

可观察集合不会更新数据

试试这样的事情

public async Task GetActivityStudentCollection()
{
    var studentActivityColl =  await ViewModelLocator.ActivityViewModel.GetActivity(0, 8, 0, 20);
    foreach(var studentAct in studentActivityColl)
        StudentActivityCollection.Add(studentAct);
    StudentActivityCollection.CollectionChanged += StudentActivityCollection_CollectionChanged;
//     RaisePropertyChanged("StudentActivityCollection");
}

不应从该方法返回新集合。您应该传递一个实例。

ObservableCollection studentActivityCollection = new ObservableCollection();
studentActivityCollection.CollectionChanged += StudentActivityCollection_CollectionChanged;
await ViewModelLocator.ActivityViewModel.GetActivity(studentActivityCollection, 0, 8, 0, 20);

因为所有事件都是在您在其上注册事件之前触发的。