首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >INotifyPropertyChanged和BindingList ListChanged事件

INotifyPropertyChanged和BindingList ListChanged事件
EN

Stack Overflow用户
提问于 2012-11-08 06:14:13
回答 2查看 2.4K关注 0票数 3

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

代码语言:javascript
复制
public class MyClass : INotifyPropertyChanged
{
    private BindingList<String> myList;

    public BindingList<String> MyList
    {
        get { return myList; }
        set
        {
            if (myList == value) return;
            myList = value;
            OnPropertyChanged("MyList");
        }
    }
}

是否需要设置以下事件处理程序:

代码语言:javascript
复制
myList.ListChanged += (object sender, ListChangedEventArgs e) => OnPropertyChanged("MyList");

还是被检测到了?我知道BindingList类将在它的模板类型上查找INotifyPropertyChanged接口,这样它就可以确定是否应该引发ListChanged事件,但我不确定它是否以另一种方式工作。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-08 06:18:49

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

票数 2
EN

Stack Overflow用户

发布于 2012-11-08 06:18:48

INotifyPropertyChange接口用于在更改类内的属性时进行通知。对于notify when a collection items更改,您必须使用INotifyCollectionChanged

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13279186

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档