3

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

当我从列表中添加或删除项目时,它工作得很好,但是当我更改一个项目时,它不会按照我想要的方式退出工作。

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

我期望它工作的方式是每个属性都在 GridControl 上实时更新更新。但是更新非常“笨拙”。有时它一次更新 2 行,有时我必须单击 GridControl 才能获取新值。

为什么会这样?

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

4

2 回答 2

3

但是当我改变一个项目时,它并没有按照我想要的方式退出工作。

因为项目中的更改不是 BindingList 所关心的——这就是项目应该实现 INotifyPropertyChanged 的​​原因。

基本上,绑定列表说明 LIST 何时更改,但是如果您更新一个属性 - 列表应该如何知道 ;) 以及它为什么要关心 - 每个项目分别负责使用所述接口发布对其属性的更新。

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

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

于 2012-04-14T16:24:47.823 回答
1

您的对象BindingList应该实现接口并在其属性值更改时INotifyPropertyChanged引发事件。PropertyChanged

于 2012-04-14T16:01:51.320 回答