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

Jas*_*n D 5 c# mvvm mvvm-light

我正在使用MVVM Light框架在WPF中开发一个项目.我有一个DataGrid必然的ObservableCollection<Worker>.截至目前,当我添加一个新项目时,DataGrid它不会更新,我相信这是因为setter永远不会触发.

public ObservableCollection<Worker> MasterWorkerList
{
    get { return _masterWorkerList; }
    set 
    {
        System.Windows.MessageBox.Show("Firing");
        _masterWorkerList = value; 
        RaisePropertyChanged(() => MasterWorkerList); 
    }
}
Run Code Online (Sandbox Code Playgroud)

即使我在调用此消息时,消息框也不会显示:

DataManager.Data.MasterWorkerList.Add(_create.NewWorker());
Run Code Online (Sandbox Code Playgroud)

我怎样才能RaisePropertyChanged开火,以便我可以更新UI?

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

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

Def*_*ult 10

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

public MyClass(){
    _masterWorkerList = new ObservableCollection<Worker>();
    _masterWorkerList.CollectionChanged += OnCollectionChanged;
}

public ObservableCollection<Worker> MasterWorkerList
{
    get { return _masterWorkerList; }
}

private void OnCollectionChanged(object sender, NotifyCollectionChangedEventArgs e){
    System.Windows.MessageBox.Show("Firing");
    //RaisePropertyChanged(() => MasterWorkerList); 
}
Run Code Online (Sandbox Code Playgroud)

CollectionChanged当您Add访问ObservableCollection 时会调用该事件.如果您需要更多根深蒂固的控件,您可以继承ObservableCollection并覆盖AddItemRemoveItem方法.