2010-12-03 2 views
0

Setup:Двухсторонний связывание и селектор

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

Проблема:

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

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

+0

ObservableCollection - что это код для MyColor класса – 2010-12-03 10:02:22

+0

Это действительно не имеет значения. Представьте себе обычный «открытый класс MyColor: INotifyPropertyChanged {/ * некоторые члены * /}». Ничего особенного. – Jefim 2010-12-03 10:37:57

ответ

0

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

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

ChangingData.Clear(); 
// <Rebuild> 

comboBox.SetBinding(ComboBox.SelectedItemProperty, binding);