将ComboBox绑定到两个源

时间:2013-10-14 05:47:44

标签: .net winforms binding combobox bindingsource

所以我有List<T>我将ComboBox绑定到BindingSource。工作正常,没问题。现在我需要在列表中没有的ComboBox中再添加一个项目(我也无法修改List的内容)。我想到了以下方案:

  1. 创建原始列表的副本,并在绑定之前向其添加一个项目。
  2. 通过LINQ创建两个列表的UNION(第二个只有一个项目),然后让我的BindingSource监视聚合列表。
  3. 手动将项目添加到ComboBox,然后监视列表以进行更改。
  4. 现在我不想进入第三种选择而失去约束优势。第一个选项不起作用,因为新创建的列表未链接到原始列表,因此不会更新。通过LINQ组合两个列表也会创建一个独立的列表。

    所以我在这里寻找的是我称之为AggregateBindingSource的{​​{1}},它将一个或多个List<T>作为其数据源并自动更新我的ComboBox。

    或者有人有更好的主意吗?

1 个答案:

答案 0 :(得分:1)

我会在自己的类(ViewModel)中创建一个新的List,它由List +单个项组成。 并将此新列表数据绑定到您的ComboBox。

  1. 如果您正在使用引用,则在ViewModel中更新List将自动更新其他List + Item中的条目。

  2. 如果您不使用参考文献,则必须更新列表+项目。您可以在ViewModel中使用更新功能。但即使你只使用一个整数,我也会把它放在一个对象中,这样你就可以使用这个引用,然后你可以再次使用它。

  3. 因此,如果您使用帖子中描述的前两个步骤之一并了解引用,则创建新列表没有问题。