将多个ComboBox绑定到相同的ItemsSource会导致问题

时间:2014-10-28 18:08:00

标签: c# wpf binding combobox itemssource

我有2个ComboBoxes ItemsSource绑定到同一个ObservableCollection

public ObservableCollection<MyType> MyTypeCollection { get; set; }

我定义了2个不同的SelectedItem属性,这些属性又与正确的ComboBox绑定。

public MyType MySelectedItem1 { get; set; }
public MyType MySelectedItem2 { get; set; }

每当我在其中一个ComboBoxes中选择一个项目时,我班级中定义的两个SelectedItem属性都会设置为该选择。两个ComboBoxes也可以在视觉上设置为该值。

为什么会这样?

我尝试了一些像Mode=OneWay等的东西,但它没有用。

这是我的XAML(针对这个问题进行了修剪):

<ComboBox SelectedItem="{Binding MySelectedItem1}"
          ItemsSource="{Binding MyTypeCollection, Mode=OneWay}"/>

<ComboBox SelectedItem="{Binding MySelectedItem2}"
          ItemsSource="{Binding MyTypeCollection, Mode=OneWay}"/>

1 个答案:

答案 0 :(得分:8)

我猜你在两个IsSynchronizedWithCurrentItem="True"控件上都有ComboBox。从两者中删除它,这应该可以解决您的问题。

设置IsSynchronizedWithCurrentItem="True"会告诉ComboBox它应该使SelectedItem与基础CurrentItem中的ICollectionView保持同步。由于您直接绑定到集合而不是集合视图,因此两个组合框都使用默认集合视图,这是跨控件共享的常见实例。当您的某个组合框更新集合视图的选择时,另一个会看到更改并更新自己的选择以匹配它。