C# BindingList就是这样工作的吗?

C# BindingList就是这样工作的吗?,c#,winforms,devexpress,gridcontrol,C#,Winforms,Devexpress,Gridcontrol,我有一个绑定到BindingList的DevXPress GridControl。我使用了BindingList,以便将更改自动应用于绑定控件 当我从列表中添加或删除项目时,它可以完美地工作,但当我更改项目时,它不会以我想要的方式退出工作 我创建了一个foreach循环,该循环在另一个线程中运行(以保持UI线程可以自由更新),该循环迭代BindingList中的所有对象并更改它们的一些属性 我期望它的工作方式是每个属性实时更新GridControl。然而,更新非常“笨重”。有时它一次更新两行,有

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

当我从列表中添加或删除项目时,它可以完美地工作,但当我更改项目时,它不会以我想要的方式退出工作

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

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

为什么会发生这种情况


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

绑定列表中的对象应实现
INotifyPropertyChanged
接口,并在其属性值更改时引发
PropertyChanged
事件

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

因为项目内的更改不是BindingList所关心的,所以项目应该实现INotifyPropertyChanged

基本上,绑定列表会在列表发生更改时显示,但是如果您更新了属性,那么列表应该如何知道;)它为什么要在意呢?每个项目都分别负责使用所述界面发布其属性的更新

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

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