在弄乱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,因此我误解了这些集合的目的。
有人可以帮助我理解吗?
答案 0 :(得分:1)
当从集合中添加或删除项目以及刷新整个集合时,ObservableCollection<T>
会向UI提供通知。
但是,当MyCollection
属性设置为新集合时,它不会通知视图。因此,如果要在加载视图后动态分配MyCollection
属性,则需要引发PropertyChanged
源属性的MyCollection
事件,以便使用新集合重新加载视图