Two combobox with same ItemsSource of ObservableCollection<ComboBoxItem>

爱⌒轻易说出口 提交于 2019-12-13 10:57:15

问题


<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

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!