BindableCollection和NotifyOfPropertyChange

时间:2018-06-23 01:11:24

标签: wpf caliburn.micro

在弄乱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,因此我误解了这些集合的目的。

有人可以帮助我理解吗?

1 个答案:

答案 0 :(得分:1)

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

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