当基础Collection的Count == 0时,BindingSource被挂起

时间:2011-03-28 21:22:11

标签: c# .net-3.5 binding

我遇到了BindingSource的奇怪行为。首先,我将设计器中的DataSource设置为UI将用于绑定的类型,但是当我然后检索数据时,我将DataSource设置为此类型的Collection。当Collection实际存储一些对象时,一切正常。问题开始时,它是空的(不是空,只是空)。 BindingSource被挂起,甚至向Collection添加内容也不会改变它,ResumeBinding也没有效果。在这种状态下它完全没用。

我找到了一个解决方法,只是将DataSource设置为null,然后设置为相同的Collection,但这次添加了元素(没有设置为null它不起作用)。谁可以给我解释一下这个?为什么BindingSource以这种方式运行?当然,有一种优雅的方法来解决这个问题吗?我不喜欢我找到的解决方案。

2 个答案:

答案 0 :(得分:1)

Collection<T>不支持列表通知,因此无法告知UI更新或执行任何有用的操作。更改为BindingList<T>而非Collection<T>应解决此问题。

答案 1 :(得分:0)

我已使用以下代码添加新项目来解决问题:

myBindingsurce.Add(myObject);

而不是

myCollectoin.Add(myObject);

当数据源(我使用过List类)为空时,我遇到了同样的问题。 IsBindingSuspended设置为true ...

希望这会对你有所帮助。