这是BindingList的工作方式吗?

时间:2012-04-14 12:19:06

标签: c# winforms devexpress gridcontrol

我有一个绑定到BindingList的DevExpress GridControl。我使用了BindingList,以便更改自动应用于绑定控件。

当我从列表中添加或删除项目时它非常有效,但是当我更改项目时,它不会按照我想要的方式退出工作。

我创建了一个在另一个线程中运行的foreach循环(以保持UI线程可以自由更新),它循环遍历BindingList中的所有对象并更改它们的一些属性。

我期望它的工作方式是每个属性实时更新GridControl上的更新。然而,更新非常“粗糙”。有时它一次更新2行,有时我必须单击GridControl来获取新值。

为什么会这样?

在每个项目后调用DataControl.RefreshDataSource()是一个很好的解决方案吗?

2 个答案:

答案 0 :(得分:3)

  

但是当我更改项目时,它不会按照我想要的方式退出工作。

项目中的Becasue更改不是BindingList关心的东西 - 这就是项目应该实现INotifyPropertyChanged的原因。

基本上绑定列表表示LIST何时发生了变化,但是如果你更新了一个属性 - 列表应该如何知道;)为什么要关注 - 每个项目都要负责使用所述接口向其属性发布更新。< / p>

  

在每个项目之后调用DataControl.RefreshDataSource()是一个很好的解决方案吗?

最糟糕的方式。确保项目实现INotifyPropertyChange并相应地引发PropertyChanged事件。

答案 1 :(得分:1)

BindingList中的对象应实现INotifyPropertyChanged界面,并在其属性值发生变化时引发PropertyChanged事件。