BindableCollection 和 NotifyOfPropertyChange

BindableCollection and NotifyOfPropertyChange

在使用 Caliburn Micro 时,我有一个名为 MyCollection 的 DataGrid,它使用约定将 Itemsource 设置为我的视图模型中名为 MyCollection 的集合。我是这样声明的:

public BindableCollection<ModelClass> MyCollection{ get; set; }

当我运行时,我没有得到物品,所以我将其更改为

 public BindableCollection<ModelClass> MyCollection
    {
        get => _myCollection;
        set
        {
            if (Equals(value, _myCollection)) return;
            _myCollection= value;
            NotifyOfPropertyChange(() => MyCollection);
        }
    }

并且有效。我注意到 BindableCollection 有一个 IsNotifying 属性,它是 ObservableCollection 的一个子类。我认为这意味着它会自动触发 NotifyOfPropertyChange,所以我认为我误解了这些集合的目的。

谁能帮我理解一下?

ObservableCollection<T> 在集合中添加或删除项目以及刷新整个集合时向 UI 提供通知。

但是,当 MyCollection 属性 设置为新集合时,它不会通知视图。因此,如果您在加载视图后动态分配 MyCollection 属性,则需要为 MyCollection 源 属性 引发 PropertyChanged 事件重新加载新集合的视图。