我有 2 个 ComboBoxes
,它们的 ItemsSource
绑定(bind)到同一个 ObservableCollection
:
public ObservableCollection<MyType> MyTypeCollection { get; set; }
我定义了 2 个不同的 SelectedItem
属性,它们依次绑定(bind)到正确的 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}"/>
最佳答案
我猜您在两个 ComboBox
控件上都有 IsSynchronizedWithCurrentItem="True"
。从两者中删除它,这应该可以解决您的问题。
设置 IsSynchronizedWithCurrentItem="True"
告诉 ComboBox
它应该保持其 SelectedItem
与 CurrentItem
同步> 在底层 ICollectionView
中。由于您直接绑定(bind)到集合而不是 Collection View ,因此两个组合框都使用默认 Collection View ,这是跨控件共享的公共(public)实例。当您的一个组合框更新 Collection View 的选择时,另一个组合框会看到更改并更新自己的选择以匹配它。
关于c# - 将多个 ComboBoxes 绑定(bind)到同一个 ItemsSource 会导致问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26615427/