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