我有一个绑定到BindingList的DevExpress GridControl。我使用了BindingList,以便更改自动应用于绑定控件。
当我从列表中添加或删除项目时它非常有效,但是当我更改项目时,它不会按照我想要的方式退出工作。
我创建了一个在另一个线程中运行的foreach循环(以保持UI线程可以自由更新),它循环遍历BindingList中的所有对象并更改它们的一些属性。
我期望它的工作方式是每个属性实时更新GridControl上的更新。然而,更新非常“粗糙”。有时它一次更新2行,有时我必须单击GridControl来获取新值。
为什么会这样?
在每个项目后调用DataControl.RefreshDataSource()
是一个很好的解决方案吗?
答案 0 :(得分:3)
但是当我更改项目时,它不会按照我想要的方式退出工作。
项目中的Becasue更改不是BindingList关心的东西 - 这就是项目应该实现INotifyPropertyChanged的原因。
基本上绑定列表表示LIST何时发生了变化,但是如果你更新了一个属性 - 列表应该如何知道;)为什么要关注 - 每个项目都要负责使用所述接口向其属性发布更新。< / p>
在每个项目之后调用DataControl.RefreshDataSource()是一个很好的解决方案吗?
最糟糕的方式。确保项目实现INotifyPropertyChange并相应地引发PropertyChanged事件。
答案 1 :(得分:1)
BindingList
中的对象应实现INotifyPropertyChanged
界面,并在其属性值发生变化时引发PropertyChanged
事件。