Текстовое поле WPF Combobox не обновляется при изменении привязки - PullRequest
1 голос
/ 18 марта 2010

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

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

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

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

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

EDIT:

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

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

Выбранный элемент WPF ComboBox не обновляется

Который дает подсказки ответа, но, к сожалению, недостаточно.

Ответы [ 3 ]

0 голосов
/ 18 марта 2010

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

0 голосов
/ 19 марта 2010

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

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

0 голосов
/ 18 марта 2010

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

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

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

...