c# - 即使实现了 INotifyProperty 接口(interface),ObservableCollection 也不会刷新

标签 c# wpf data-binding

我有一个绑定(bind)到列表框的 ObservableCollection

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

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

public bool IsChecked
{
    get
    {
        return _isChecked;
    }
    set 
    {
        _isChecked = value;
        base.OnPropertyChanged("IsChecked");
    }
}

即使我为每个属性实现了 INotifyPropertyChanged 接口(interface),为什么 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
}

构造函数:

public ChromosomeVM(Chromosome _chr, string insertionFilePath)
{
    Chr = _chr;
    _insertions.CollectionChanged += ContentCollectionChanged;
}     

最佳答案

这是您的代码:(请同时查看我所做的评论)

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

你现在能看出问题所在了吗?将 ChromosomeList 更改为 Insertions。希望至少能解决一些问题!

关于c# - 即使实现了 INotifyProperty 接口(interface),ObservableCollection 也不会刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4425352/

相关文章:

wpf - 为什么 DockPanel.Dock ="Bottom"将元素放在顶部?

java - 方法中的@ModelAttribute

c# - 错误后如何停止服务?

c# - linq中的子串

c# - WinForms 上下文菜单 - 在某些部分未打开/检测底层控件

c# - 从 .NET Framework 2.0 迁移到 4.5.2

c# - 根据屏幕分辨率调整 WPF 窗口和内容的大小

wpf - 绑定(bind)到内联数组声明内的 DataContext 属性

Grails 数据绑定(bind)和允许的 HTTP 方法

c# - 向WPF Datagrid添加很多项目会消耗大量CPU时间