2017-06-13 5 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"} 
} 

コンボボックスを切り替えると、1つのドロップダウンが空になります。なぜなのかご存知ですか?それはStringのコレクションを扱っています。同じItemsの2つのコンボボックスObservableCollectionのソース<ComboBoxItem>

+0

これをしないと、 'ComboBoxItem'sのObservableCollectionが醜いです。 MVVMとビューをモデルから分離する方法について詳しくは、こちらをご覧ください。エラーを解決するには、代わりに 'ObservableCollection 'を使用してください。 – dymanoid

+1

ObservableCollection を使用しています。正常に動作します。 – user3046935

答えて

0

ComboBoxItemは、複数の親に属していないFrameworkElementです。

文字列コレクションを使用すると、各ComboBoxは同じ文字列の新しいComboBoxItemを生成します。コレクションにComboBoxItemsが含まれている場合、comboBoxes 他のComboBoxItemを作成して既存のものを再利用しないでください。

MVVMのアプローチに従うときは、バインディングソースを提供するビューモデルにComboBoxItemオブジェクトを持たないでください。

したがって、文字列のコレクションは正しい解決策です。

関連する問題