如果我有一个像下面这样的类:
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事件,但我不确定它是否以另一种方式工作。
发布于 2012-11-08 06:18:49
您的myList字段被封装在类中-它所做的任何事情都不会自动“冒泡出来”。绑定到类实例的东西不会知道myList中的更改,除非您使用您编写的事件处理程序之类的东西将它们传播出去。但是,绑定到MyList属性的内容将获得对BindingList对象的直接引用,因此它们将看到由myList引发的通知。
发布于 2012-11-08 06:18:48
INotifyPropertyChange接口用于在更改类内的属性时进行通知。对于notify when a collection items更改,您必须使用INotifyCollectionChanged。
https://stackoverflow.com/questions/13279186
复制相似问题