<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的集合。
答案 0 :(得分:0)
ComboBoxItem是一个FrameworkElement,它不能属于多个父项。
使用字符串集合时,每个ComboBox都会为同一个字符串生成一个新的ComboBoxItem。当集合包含ComboBoxItems时,组合框不创建其他ComboBoxItem并重用现有的,从而相互窃取它们。
此外,当您遵循MVVM方法时,您不应该在提供绑定源的视图模型中使用ComboBoxItem对象。
所以字符串收集是一个正确的解决方案。