2017-06-13 45 views
-2
<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的集合。兩個組合框具有相同的ItemsSource of ObservableCollection <ComboBoxItem>

+0

不要這樣做,'ComboBoxItem'的'ObservableCollection'很醜。請閱讀有關MVVM的更多信息,以及如何從模型中分離視圖。要解決您的錯誤:請改爲使用「ObservableCollection 」。 – dymanoid

+1

我用ObservableCollection 它工作良好 – user3046935

回答

0

ComboBoxItem是一個不能屬於多個父母的FrameworkElement。

當您使用字符串集合時,每個ComboBox都會爲同一個字符串生成一個新的ComboBoxItem。當集合包含ComboBoxItems時,comboBoxes 不會創建其他ComboBoxItems並重用現有的,從彼此竊取它們。

此外,當您遵循MVVM方法時,您不應該在提供綁定源的視圖模型中具有ComboBoxItem對象。

所以字符串收集是一個正確的解決方案。

相關問題