问题
<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"}
}
When I am switching between comboboxes then one dropdown become empty. Do you know why? It is working with collection of String.
回答1:
ComboBoxItem is a FrameworkElement which cannot belong to multiple parents.
When you use string collection, each ComboBox generate a new ComboBoxItem for the same string. When collection contains ComboBoxItems, comboBoxes don't create other ComboBoxItems and reuse existing, stealing them from each other.
Additionally when you follow MVVM approach, you should not have ComboBoxItem objects in a view model which provides binding source.
So string collection is a correct solution.
来源:https://stackoverflow.com/questions/44524041/two-combobox-with-same-itemssource-of-observablecollectioncomboboxitem