添加项目时,ObservableCollection setter不会触发
我正在使用MVVM Light框架在WPF中开发一个项目。 我有一个绑定到ObservableCollection
的DataGrid
。 截至目前,当我添加一个新项目时, 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
事件。 如果需要更多根深蒂固的控件,可以从ObservableCollection
inheritance并覆盖AddItem
和RemoveItem
方法。