3

如果我有一个像下面这样的课程:

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 事件,但我不确定它是否以其他方式工作。

4

2 回答 2

2

您的myList字段被封装在您的类中 - 它所做的任何事情都不会自动“冒泡”。绑定到您的类实例的事物不会知道更改,myList除非您使用您编写的事件处理程序之类的东西将它们传播出去。但是,绑定到该MyList属性的事物将获得对该BindingList对象的直接引用,因此它们将看到由myList.

于 2012-11-07T22:18:49.027 回答
1

INotifyPropertyChange接口用于在更改类内的属性时进行通知。要在集合项目更改时通知您,您必须使用INotifyCollectionChanged.

于 2012-11-07T22:18:48.263 回答