我遇到了BindingSource的奇怪行为。首先,我将设计器中的DataSource设置为UI将用于绑定的类型,但是当我然后检索数据时,我将DataSource设置为此类型的Collection。当Collection实际存储一些对象时,一切正常。问题开始时,它是空的(不是空,只是空)。 BindingSource被挂起,甚至向Collection添加内容也不会改变它,ResumeBinding也没有效果。在这种状态下它完全没用。
我找到了一个解决方法,只是将DataSource设置为null,然后设置为相同的Collection,但这次添加了元素(没有设置为null它不起作用)。谁可以给我解释一下这个?为什么BindingSource以这种方式运行?当然,有一种优雅的方法来解决这个问题吗?我不喜欢我找到的解决方案。
答案 0 :(得分:1)
Collection<T>
不支持列表通知,因此无法告知UI更新或执行任何有用的操作。更改为BindingList<T>
而非Collection<T>
应解决此问题。
答案 1 :(得分:0)
我已使用以下代码添加新项目来解决问题:
myBindingsurce.Add(myObject);
而不是
myCollectoin.Add(myObject);
当数据源(我使用过List类)为空时,我遇到了同样的问题。 IsBindingSuspended设置为true ...
希望这会对你有所帮助。