Двусторонняя привязка и селектор - PullRequest
0 голосов
/ 03 декабря 2010

Настройка:

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

Проблема:

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

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

1 Ответ

0 голосов
/ 14 июня 2011

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

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

ChangingData.Clear();
// <Rebuild>

comboBox.SetBinding(ComboBox.SelectedItemProperty, binding);
...