当前位置:  开发笔记 > 编程语言 > 正文

如何检测BindingList <T>中项目属性的更改?

如何解决《如何检测BindingList<T>中项目属性的更改?》经验,为你挑选了1个好方法。

我有一个具有属性A和B的自定义类Foo.我想在数据绑定控件中显示它.

我创建了一个类Foos : BindingList.

为了更新FOOS类内部的一些特性,我需要通知的属性发生变化(我可以处理插入,删除等)在列表中的项目.您将如何实现该功能?

我应该从支持它的框架中的某个对象继承Foo吗?我想我可以创建一些事件,通知我是否有变化,但这是应该做的方式吗?或者框架中是否有一些模式,这对我有帮助?



1> Juliet..:

Foo应该实现INotifyPropertyChangedINotifyPropertyChanging接口.

public void Foo : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;

    private void NotifyPropertyChanged(String info)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(info));
        }
    }

    private int _someValue;
    public int SomeValue
    {
        get { return _someValue; }
        set { _someValue = value; NotifyPropertyChanged("SomeValue"); }
    }
}

BindingList应自动钩住你的事件处理程序,只要你设置你的类调用你的GUI现在应该更新PropertyChanged事件处理程序.

[编辑添加:]此外,BindingList该类公开了两个事件,这些事件在添加或修改集合时通知您:

public void DoSomething()
{
    BindingList foos = getBindingList();
    foos.ListChanged += HandleFooChanged;
}

void HandleFooChanged(object sender, ListChangedEventArgs e)
{
    MessageBox.Show(e.ListChangedType.ToString());
}

推荐阅读
mobiledu2402851323
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有