c# - 将多个 ComboBoxes 绑定(bind)到同一个 ItemsSource 会导致问题

标签 c# wpf binding combobox itemssource

我有 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 它应该保持其 SelectedItemCurrentItem 同步> 在底层 ICollectionView 中。由于您直接绑定(bind)到集合而不是 Collection View ,因此两个组合框都使用默认 Collection View ,这是跨控件共享的公共(public)实例。当您的一个组合框更新 Collection View 的选择时,另一个组合框会看到更改并更新自己的选择以匹配它。

关于c# - 将多个 ComboBoxes 绑定(bind)到同一个 ItemsSource 会导致问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26615427/

相关文章:

c# - 获取前 3 个最受欢迎的项目 c# linq EF

c# - 如何根据值的类型和名称创建枚举对象?

c# - 对于这种情况,最有效的搜索机制是什么?

c# - WPF 自定义形状

绑定(bind) Ember TextField 中的计算属性

c# - 将文本框绑定(bind)到属性

c#如何检测文件中的多个空格

css - WPF ResourceDictionary 和绑定(bind)

.net - 如何使用 WPF 创建看起来像 Windows 7 中的通知区域窗口的 Windows?

wpf - MVVM (with WPF) - 将多个 View 绑定(bind)到同一个 ViewModel