我有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}"/>
答案 0 :(得分:8)
我猜你在两个IsSynchronizedWithCurrentItem="True"
控件上都有ComboBox
。从两者中删除它,这应该可以解决您的问题。
设置IsSynchronizedWithCurrentItem="True"
会告诉ComboBox
它应该使SelectedItem
与基础CurrentItem
中的ICollectionView
保持同步。由于您直接绑定到集合而不是集合视图,因此两个组合框都使用默认集合视图,这是跨控件共享的常见实例。当您的某个组合框更新集合视图的选择时,另一个会看到更改并更新自己的选择以匹配它。