所以我有一个List<T>
,我绑定我的ComboBox
到BindingSource
。工作正常,没问题。现在我需要添加一个项目到我的ComboBox
列表中不可用(并且我无法修改列表的内容)。下面的方案出现在我的脑海里:将组合框绑定到两个源
- 创建一个原始列表的副本,并在绑定之前再添加一个项目。
- 通过LINQ创建两个列表的联合(第二个只有一个项目),然后让我的BindingSource监视聚合列表。
- 手动添加项目到组合框,然后监视列表中的更改。
现在我不想去第三个选项,失去约束优势。第一个选项不起作用,因为新创建的列表未链接到原始列表,因此不会更新。通过LINQ合并两个列表也会创建一个独立的列表,我猜。
所以我在这里寻找的是我所说的AggregateBindingSource
,它会将一个或多个List<T>
s作为它的DataSource并自动更新我的ComboBox。
还是有人有更好的主意吗?
从现有列表(例如使用构造函数)创建新列表并不以任何方式将新列表链接到旧列表。它仅创建原始列表的浅拷贝(即使使用引用)。原始列表中的任何更改都不会影响新列表的内容。 – dotNET
ofc他们没有真正联系,但如果你在两个列表中存储相同的引用,那么他们访问相同的元素。 因此,如果您删除或插入一个列表中,您必须更新。但是如果你只是改变元素的一些成员,他们将在两个列表中更新。 –
正确,但你只是建议案件号。 3我上面发布了,我想避免,因为这个列表将要经历很多插入/删除操作,所以绑定真的很方便。 – dotNET