Двусторонняя привязка и селектор

Настроить:

  1. Существует ComboBox, который связан с ObservableCollection.
  2. В интерфейсе есть объект Car. Его свойство Color привязано к SelectedItem ComboBox (привязка: <ComboBox SelectedItem="{Binding Car.Color}".../>
  3. Список цветов может изменяться в базе данных и иногда должен обновляться.

Эта проблема:

Когда ObservableCollection<MyColor> обновляется (== это означает, что он отправляет Reset внутри его CollectionChanged событие) для свойства "Цвет автомобиля" задается первый элемент в коллекции => список обновляется => ComboBox перезагружает коллекцию и устанавливает выбранный элемент в первый элемент коллекции => цвет автомобиля изменяется на тот же первый элемент (из-за двусторонней привязки) => проблема

Итак, вкратце - как я могу избежать этого? Как я могу при перезагрузке сказать, чтобы взять выбранный элемент сразу же из привязки?

1 ответ

Решение

Вы можете удалить привязку при изменении коллекции:

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

ChangingData.Clear();
// <Rebuild>

comboBox.SetBinding(ComboBox.SelectedItemProperty, binding);
Другие вопросы по тегам