两个组合框与ObservableCollection的相同ItemsSource <comboboxitem>

时间:2017-06-13 14:12:49

标签: wpf combobox

<ComboBox Grid.Row="0" ItemsSource="{Binding Path=optList}" IsSynchronizedWithCurrentItem="False" />
<ComboBox Grid.Row="1" ItemsSource="{Binding Path=optList}" IsSynchronizedWithCurrentItem="False" />
public ObservableCollection<ComboBoxItem> optList{ get; set; } = new ObservableCollection<ComboBoxItem>() {
new ComboBoxItem() { Content = "1"},
new ComboBoxItem() { Content = "2"}
}

当我在组合框之间切换时,一个下拉列表变空。你知道为什么吗?它正在使用String的集合。

1 个答案:

答案 0 :(得分:0)

ComboBoxItem是一个FrameworkElement,它不能属于多个父项。

使用字符串集合时,每个ComboBox都会为同一个字符串生成一个新的ComboBoxItem。当集合包含ComboBoxItems时,组合框创建其他ComboBoxItem并重用现有的,从而相互窃取它们。

此外,当您遵循MVVM方法时,您不应该在提供绑定源的视图模型中使用ComboBoxItem对象。

所以字符串收集是一个正确的解决方案。

相关问题