我有一个绑定(bind)到 BindingList 的 DevExpress GridControl。我使用了 BindingList,以便更改自动应用到绑定(bind)控件。
当我从列表中添加或删除项目时,它工作得很好,但当我更改项目时,它不会按照我想要的方式退出工作。
我创建了一个在另一个线程中运行的 foreach 循环(以保持 UI 线程可以自由更新),该循环遍历 BindingList 中的所有对象并更改它们的一些属性。
我希望它的工作方式是每个属性都实时更新 GridControl 上的更新。然而,更新非常“笨拙”。有时它一次更新 2 行,有时我必须单击 GridControl 才能获取新值。
为什么会这样?
在每个项目之后调用 DataControl.RefreshDataSource()
是一个好的解决方案吗?
最佳答案
but when I change an item, it doesn't quit work the way I want it.
因为项目内的更改不是 BindingList 关心的东西 - 这就是项目应该实现 INotifyPropertyChanged 的原因。
基本上绑定(bind)列表会说明 LIST 何时发生更改,但是如果您更新属性 - 列表应该如何知道 ;) 以及它为什么要关心 - 每个项目都单独负责使用所述接口(interface)发布对其属性的更新。
Is it a good solution to call DataControl.RefreshDataSource() after each item?
最糟糕的方式。确保项目实现 INotifyPropertyChange 并相应地引发 PropertyChanged 事件。
关于c# - 这是 BindingList 应该工作的方式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10153554/