如果我有类似下面的课程:
public class MyClass : INotifyPropertyChanged
{
private BindingList<String> myList;
public BindingList<String> MyList
{
get { return myList; }
set
{
if (myList == value) return;
myList = value;
OnPropertyChanged("MyList");
}
}
}
我是否需要设置以下事件处理程序:
myList.ListChanged += (object sender, ListChangedEventArgs e) => OnPropertyChanged("MyList");
还是检测到了?我知道BindingList类将在模板化类型上查找INotifyPropertyChanged接口,因此它可以确定它是否应该引发ListChanged事件,但我不确定它是否以其他方式工作。
答案 0 :(得分:2)
您的myList
字段已封装在您的课程中 - 它所做的任何事情都不会自动“冒出”。绑定到类实例的内容将不会知道myList
中的更改,除非您使用您编写的事件处理程序将其传播出去。但是,绑定到MyList
属性的内容会直接引用BindingList
对象,因此他们会看到myList
引发的通知。
答案 1 :(得分:1)
INotifyPropertyChange
接口用于更改类中的属性时的通知。如果收集项目发生更改时发出通知,则必须使用INotifyCollectionChanged
。