即使实现了INotifyProperty接口,ObservableCollection也不会刷新

Kia*_*eng 5 c# data-binding wpf

我有一个ObservableCollection绑定到列表框

public ObservableCollection<InsertionVM> Insertions
{
    get
    {
        return _insertions;
    }
    set
    {
        _insertions = value;
        base.OnPropertyChanged("ChromosomeList");
    }
}
Run Code Online (Sandbox Code Playgroud)

它的成员InsertionVM实现INotifyPropertyChanged。它具有将被更新的属性。

public bool IsChecked
{
    get
    {
        return _isChecked;
    }
    set 
    {
        _isChecked = value;
        base.OnPropertyChanged("IsChecked");
    }
}
Run Code Online (Sandbox Code Playgroud)

即使为每个属性实现INotifyPropertyChanged接口,为什么ObservableCollection也不会刷新?


更新:

我尝试了下面给出的链接,但是“更敏感的集合”仅在删除/添加对象时才更新。

if (e.Action == NotifyCollectionChangedAction.Remove)
{
    foreach (InsertionVM item in e.NewItems)
    {
        //Removed items
        item.PropertyChanged -= EntityViewModelPropertyChanged;
    }
}
else if (e.Action == NotifyCollectionChangedAction.Add)
{
    foreach (InsertionVM item in e.NewItems)
    {
        //Added items
        item.PropertyChanged += EntityViewModelPropertyChanged;
    }
}

public void EntityViewModelPropertyChanged(object sender, PropertyChangedEventArgs e)
{
    //Debugger does not reach here
}
Run Code Online (Sandbox Code Playgroud)

构造函数:

public ChromosomeVM(Chromosome _chr, string insertionFilePath)
{
    Chr = _chr;
    _insertions.CollectionChanged += ContentCollectionChanged;
}     
Run Code Online (Sandbox Code Playgroud)

Naw*_*waz 2

这是你的代码:(另请参阅我所做的评论)

public ObservableCollection<InsertionVM> Insertions // propertyName == Insertions
{
    get
    {
        return _insertions;
    }
    set
    {
        _insertions = value;
        base.OnPropertyChanged("ChromosomeList"); // What is ChromosomeList??
    }
}
Run Code Online (Sandbox Code Playgroud)

你现在能看出问题所在吗?改成。ChromosomeListInsertions希望至少能解决一些问题!