INotifyPropertyChanged和BindingList ListChanged事件

时间:2012-11-07 22:14:13

标签: c# inotifypropertychanged bindinglist

如果我有类似下面的课程:

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

2 个答案:

答案 0 :(得分:2)

您的myList字段已封装在您的课程中 - 它所做的任何事情都不会自动“冒出”。绑定到类实例的内容将不会知道myList中的更改,除非您使用您编写的事件处理程序将其传播出去。但是,绑定到MyList属性的内容会直接引用BindingList对象,因此他们会看到myList引发的通知。

答案 1 :(得分:1)

INotifyPropertyChange接口用于更改类中的属性时的通知。如果收集项目发生更改时发出通知,则必须使用INotifyCollectionChanged