Извините за ранее длительный пост. Вот мое краткое (!) Описание.
Я связываю представление коллекции с выпадающим списком в качестве itemsSource, а также связываю его выделенное значение со свойством из моей модели представления. Я должен оставить IsSynchronizedWithCurrentItem = "False".
Я изменяю список источников для представления, а затем обновляю представление. Измененные (добавленные, удаленные, отредактированные) элементы правильно отображаются в списке элементов в комбинированном списке Но проблема с выбранным элементом. Когда я изменяю его свойство, которое также является путем отображения элемента комбинации, измененное значение свойства не отражается обратно в поле выбора в комбинации. Если открыть раскрывающийся список со списком, он правильно отображается в списке элементов, но не в поле выбора.
Теперь, если я изменю тег combobox на Listbox в моем XAML (сохраняя все атрибуты без изменений), то когда значение свойства displaymember выбранного элемента будет обновлено, изменения отразятся обратно на выбранном элементе списка.
Почему эта проблема?
Просто к вашему сведению:
Моя модель просмотра имеет свойства EmployeeCollectionView и SelectedEmployeeId, которые связаны со списком как ItemsSource и SelectedValue, соответственно. Эта виртуальная машина реализует интерфейс INotifyPropertyChanged.
Мой основной класс сотрудников (список которых является источником для EmployeeCollectionView) - это просто класс Model без INotifyPropertyChanged.
DisplayMemberPath является свойством «Имя» сотрудника класса Модели. Я изменяю это некоторым способом и ожидаю, что поле выбора со списком обновит значение.
Я попытался обновить свой SelectedEmployeeId, установив его в 0 (где он правильно выбирает фиктивную «Выбрать все -» запись сотрудника из itemsSource) и вернул старое выбранное значение. Но бесполезно. Старое значение возвращает меня к старому лейблу. В коллекции предметов есть последняя запись.
Когда я делаю IsEditable = True в поле со списком, перед обновлением представления и после обновления я делаю IsEditable = False, тогда все работает правильно!
Но это патч и не нужен.
Thx
Винит Санхе