Текстовое поле WPF Combobox не обновляется при изменении привязки

У меня есть WPF CombBox следующим образом:

<ComboBox 
   ItemsSource="{Binding Source={StaticResource myList}}"
   SelectedItem="{Binding Path=mySelectedItem}"
/>

У меня проблема в том, что при изменении связанного значения выбранное значение в текстовом поле поля со списком не обновляется. (Примечание - значения в списке со списком обновляются).

Я использую MVVM, поэтому я могу обнаруживать в модели представления, когда привязка изменяется, и вызывать событие изменения свойства, и это обновляет поле со списком, но не значение, отображаемое в текстовом поле.

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

РЕДАКТИРОВАТЬ:

Я не разъяснил - я правильно реализую INotifyPropertyChanged и при изменении значения поднимаю PropertyChanged для myList и mySelectedItem. Проблема в том, что текстовое поле в поле со списком не обновляется.

Я нашел похожий вопрос:

WPF ComboBox SelectedItem не обновляется

Это дает намек на ответ, но, к сожалению, этого недостаточно.


person WillH    schedule 17.03.2010    source источник


Ответы (3)


Я обновил свой ответ для вас здесь

Надеюсь, поможет!!

person viky    schedule 19.03.2010

Скорее всего, ваш mySelectedItem не является свойством зависимости. Или, альтернативно, содержащий класс не реализует INotifyPropertyChanged.

Рассмотрим случай, когда ваше значение не является ни свойством зависимости, ни свойством INotifyPropertyChanged. В этом случае WPF не имеет возможности узнать, что его значение изменилось, поэтому значение загружается только один раз (с использованием отражения) в начале.

В случае свойства зависимости или когда содержащий объект поддерживает INotifyPropertyChanged, платформа WPF может подписаться на изменения значения и, таким образом, обновить поле со списком.

person Vlad    schedule 18.03.2010

Если вы ожидаете, что выбранный элемент изменится, когда значение вашей коллекции myList изменится, этого не произойдет. Если вы используете MVVM и реализуете INotifyPropertyChanged в модели представления. Затем, когда вы поднимаете PropertyChanged для myList, вы также должны повышать его для mySelectedItem, если вы ожидаете, что он будет повторно связываться или измениться каким-либо образом.

person Leigh S    schedule 18.03.2010