0

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

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();
    }

我已经将这个集合与这样的 listview 绑定了。

 ActivityListViewSource.Source = ViewModelLocator.DashBoard.StudentActivityCollection;

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

ActivityListViewSource.Source = ViewModelLocator.ActivityViewModel.ActivityCollection;

我很抱歉我的英语不好。请试着理解这个问题。是因为异步方法还是什么。任何形式的帮助表示赞赏..

4

2 回答 2

1

尝试这样的事情

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");
}
于 2013-09-27T10:18:09.973 回答
0

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

ObservableCollection studentActivityCollection = new ObservableCollection();

studentActivityCollection.CollectionChanged += StudentActivityCollection_CollectionChanged;

await ViewModelLocator.ActivityViewModel.GetActivity(studentActivityCollection, 0, 8, 0, 20);

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

于 2013-09-27T09:41:10.010 回答