可观察集合不会更新数据
本文关键字:更新 数据 观察 集合 | 更新日期: 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);
因为所有事件都是在您在其上注册事件之前触发的。