将DataTable(或List)绑定到两个组合框

时间:2011-04-16 09:58:09

标签: c# generics c#-4.0 datatable

我想要绑定到DataTable的{​​{1}}(或通用列表)。如果我在一个ComboBox更改时绑定它,则另一个ComboBox也会更改为第一个ComboBox值。

我如何分开它们?

我创建了另一个ComboBox并为其分配了主DataTable,但问题仍然存在。

3 个答案:

答案 0 :(得分:0)

看起来您将两个Comboboxes的SelectedItem属性绑定到同一属性。如果要根据组合框选择不同的项目,则应使用不同的属性:

<ComboBox ItemSource="{Binding List}" SeletectedItem="{Binding SelectedItem1, Mode=TwoWay}"/>
<ComboBox ItemSource="{Binding List}" SeletectedItem="{Binding SelectedItem2, Mode=TwoWay}"/>

答案 1 :(得分:0)

由于您将同一个对象引用到两个组合框时,一个更改其他也会更改

DataTable dt;
combobox1.DataSource=dt;
DataTable dt2;
dt2 =  dt.Copy();
combobox2.DataSource=dt2;

答案 2 :(得分:0)

问题是,只创建一个新的DataTable(或List)变量并将现有列表分配给它并不会创建一个新变量。它只是创建另一个指向同一个的引用。所以你没有两个相同的东西,你可以通过两种不同的方式获得一件事。经常绊倒人们是一个微妙的难题。 :)

NDC提到的Clone()方法是一个答案。对于列表,您还可以使用ToArray()创建数组并绑定它(因为数组不会出现相同的问题)。