我想要绑定到DataTable
的{{1}}(或通用列表)。如果我在一个ComboBox
更改时绑定它,则另一个ComboBox
也会更改为第一个ComboBox
值。
我如何分开它们?
我创建了另一个ComboBox
并为其分配了主DataTable
,但问题仍然存在。
答案 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()创建数组并绑定它(因为数组不会出现相同的问题)。