0

設定:

  1. ObservableCollection にバインドされた ComboBox があります。
  2. UI に Car オブジェクトがあります。その Color プロパティは、ComboBox の SelectedItem にバインドされています (バインディング:<ComboBox SelectedItem="{Binding Car.Color}".../>
  3. カラー リストはデータベースで変更される可能性があるため、時々更新する必要があります。

問題:

が更新されるObservableCollection<MyColor>と (== これは、Resetそのイベント内で を送信することを意味しますCollectionChanged)、車の Color プロパティがコレクションの最初の項目に設定されます => リストが更新されます => ComboBox はコレクションをリロードし、選択された項目を最初の項目に設定しますコレクション内の 1 つ => 車の色が同じ最初のアイテムに変更されている (双方向バインディングのため) => 問題

要するに、どうすればこれを回避できますか? リロード時に、選択したアイテムをバインディングからすぐに取得するように指示するにはどうすればよいですか?

4

1 に答える 1

0

コレクションの変更中にバインディングを削除できます。

var binding = comboBox.GetBindingExpression(ComboBox.SelectedItemProperty).ParentBinding;
comboBox.ClearValue(ComboBox.SelectedItemProperty);

ChangingData.Clear();
// <Rebuild>

comboBox.SetBinding(ComboBox.SelectedItemProperty, binding);
于 2011-06-14T03:16:09.720 に答える