添加项目时,ObservableCollection setter不会触发

我正在使用MVVM Light框架在WPF中开发一个项目。 我有一个绑定到ObservableCollectionDataGrid 。 截至目前,当我添加一个新项目时, DataGrid不会更新,我相信这是因为setter永远不会触发。

 public ObservableCollection MasterWorkerList { get { return _masterWorkerList; } set { System.Windows.MessageBox.Show("Firing"); _masterWorkerList = value; RaisePropertyChanged(() => MasterWorkerList); } } 

即使我打电话给它,消息框也不会显示:

 DataManager.Data.MasterWorkerList.Add(_create.NewWorker()); 

如何RaisePropertyChanged以便我可以更新UI?

我尝试使用这篇文章中的解决方案无济于事: ObservableCollection没有注意到它中的Item何时发生变化(即使使用INotifyPropertyChanged)

任何意见,将不胜感激。 如果您需要更多我的代码,请告诉我。

您不应该在对象的列表上有公共setter。 您应该在构造函数中设置ut

 public MyClass(){ _masterWorkerList = new ObservableCollection(); _masterWorkerList.CollectionChanged += OnCollectionChanged; } public ObservableCollection MasterWorkerList { get { return _masterWorkerList; } } private void OnCollectionChanged(object sender, NotifyCollectionChangedEventArgs e){ System.Windows.MessageBox.Show("Firing"); //RaisePropertyChanged(() => MasterWorkerList); } 

向ObservableCollection Add时会调用CollectionChanged事件。 如果需要更多根深蒂固的控件,可以从ObservableCollectioninheritance并覆盖AddItemRemoveItem方法。