我遇到了BindingSource的奇怪行为。首先,我将其在设计器中的DataSource设置为UI将用于绑定的类型,但是当我随后检索数据时,我将DataSource设置为此类型的集合。当Collection实际存储一些对象时,一切工作正常。当它为空(不是null,只是空)时,问题就开始了。BindingSource将被挂起,即使向集合中添加某些内容也不会改变它,ResumeBinding也不起作用。在这种状态下,它是完全无用的。
我发现了一个解决方法,简单地将DataSource设置为null,然后设置为相同的集合,但这一次添加了元素(没有设置为null就不起作用)。有人能给我解释一下吗?为什么BindingSource会有这种行为?当然,有没有一个优雅的方法来解决这个问题呢?我不喜欢我找到的解决方案。
发布于 2011-03-29 05:33:22
Collection<T>不支持列表通知,因此它无法通知UI更新或执行任何有用的操作。改为BindingList<T>而不是Collection<T>应该可以解决这个问题。
发布于 2011-07-02 06:30:15
通过使用以下代码添加新项,我已经解决了这个问题:
myBindingsurce.Add(myObject);而不是
myCollectoin.Add(myObject);当数据源(我使用的是List类)为空时,我也遇到了同样的问题。IsBindingSuspended设置为true...
希望这对你有帮助。
https://stackoverflow.com/questions/5465224
复制相似问题