C# 可观察采集设置器isn';添加项目时不触发

C# 可观察采集设置器isn';添加项目时不触发,c#,mvvm,mvvm-light,C#,Mvvm,Mvvm Light,我正在WPF中使用MVVM Light框架进行一个项目。我有一个数据网格,它绑定到一个可观察集合。到目前为止,当我添加一个新项时,DataGrid不会更新,我相信这是因为setter从不触发 public ObservableCollection<Worker> MasterWorkerList { get { return _masterWorkerList; } set { System.Windows.MessageBox.Show("

我正在WPF中使用MVVM Light框架进行一个项目。我有一个
数据网格
,它绑定到一个
可观察集合
。到目前为止,当我添加一个新项时,
DataGrid
不会更新,我相信这是因为setter从不触发

public ObservableCollection<Worker> MasterWorkerList
{
    get { return _masterWorkerList; }
    set 
    {
        System.Windows.MessageBox.Show("Firing");
        _masterWorkerList = value; 
        RaisePropertyChanged(() => MasterWorkerList); 
    }
}
如何使
RaisePropertyChanged
触发,以便更新UI

我尝试过使用本文中的解决方案,但没有效果:


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

您的对象列表中不应该有公共设置器。您应该在构造函数中设置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); 
}
publicmyclass(){
_masterWorkerList=新的ObservableCollection();
_masterWorkerList.CollectionChanged+=OnCollectionChanged;
}
公共可观测集合主工作列表
{
获取{return\u masterWorkerList;}
}
CollectionChanged的私有void(对象发送方,NotifyCollectionChangedEventArgs e){
System.Windows.MessageBox.Show(“点火”);
//RaisePropertyChanged(()=>MasterWorkerList);
}
当您向ObservableCollection添加内容时,
CollectionChanged
事件被调用。如果需要更深入的控制,可以从
observeCollection
继承并重写
AddItem
removieItem
方法

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