我有一个具有属性A和B的自定义类Foo.我想在数据绑定控件中显示它.
我创建了一个类Foos : BindingList
.
为了更新FOOS类内部的一些特性,我需要通知的属性发生变化(我可以处理插入,删除等)在列表中的项目.您将如何实现该功能?
我应该从支持它的框架中的某个对象继承Foo吗?我想我可以创建一些事件,通知我是否有变化,但这是应该做的方式吗?或者框架中是否有一些模式,这对我有帮助?
Foo应该实现INotifyPropertyChanged
和INotifyPropertyChanging
接口.
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() { BindingListfoos = getBindingList(); foos.ListChanged += HandleFooChanged; } void HandleFooChanged(object sender, ListChangedEventArgs e) { MessageBox.Show(e.ListChangedType.ToString()); }