我有两个ComboBoxes
的ItemsSource
绑定到同一个ObservableCollection
:
public ObservableCollection<MyType> MyTypeCollection { get; set; }
我定义了两个不同的
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}"/>
最佳答案
我猜你在两个控制上都有。把它从两者中移除,这就能解决你的问题。
设置IsSynchronizedWithCurrentItem="True"
告诉ComboBox
它应该保持其IsSynchronizedWithCurrentItem="True"
与底层ComboBox
中的SelectedItem
同步。由于直接绑定到集合而不是集合视图,因此两个组合框都使用默认集合视图,该视图是跨控件共享的公共实例。当其中一个组合框更新集合视图的选择时,另一个组合框将看到更改并更新自己的选择以与之匹配。