0

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

  1. 创建原始列表的副本,并在绑定之前向其中添加一个项目。
  2. 通过 LINQ 创建两个列表的 UNION(第二个只有一个项目),然后让我的 BindingSource 监视聚合列表。
  3. 手动将项目添加到 ComboBox,然后监视列表的更改。

现在我不想选择第三个选项并失去绑定优势。第一个选项不起作用,因为新创建的列表未链接到原始列表,因此不会更新。我猜通过 LINQ 组合两个列表也会创建一个独立的列表。

所以我在这里寻找的是我所说的AggregateBindingSource将一个或多个List<T>s 作为其 DataSource 并自动更新我的 ComboBox 的东西。

还是有人有更好的主意?

4

1 回答 1

1

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

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

  2. 如果您不使用参考,则必须更新您的列表 + 项目。您可以在 ViewModel 中使用更新功能。但是,即使您仅使用整数,例如,我也会将它放在一个对象中,以便您可以使用引用,然后您可以再次使用第 1 步。

因此,如果您使用您在帖子中描述的前两个步骤之一并注意参考,则创建新列表没有问题。

于 2013-10-14T06:40:25.327 回答