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
事件重新加载新集合的视图。
在使用 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
事件重新加载新集合的视图。