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

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

最佳答案

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

关于c# - INotifyPropertyChanged和BindingList ListChanged事件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13279186/

10-11 21:59
查看更多