我有两个ComboBoxesItemsSource绑定到同一个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同步。由于直接绑定到集合而不是集合视图,因此两个组合框都使用默认集合视图,该视图是跨控件共享的公共实例。当其中一个组合框更新集合视图的选择时,另一个组合框将看到更改并更新自己的选择以与之匹配。

09-05 22:33