Итак, как указано выше, я полагаю, что вы решили это, связав вместо этого SelectedItem
и убедившись, что для DataSourceUpdateMode
установлено значение OnPropertyChanged.
Однако, перефразировав вопрос, вы обнаружите, что не можете изменить поведение VS. Вы должны будете сделать выбор в отношении того, что вы связываете. Существует DefaultPropertyAttribute
, что , по крайней мере, некоторые разработчики слушают , но я не знаю, работает ли он для привязки.
Я добавлю, что в нашем приложении мы используем вспомогательный класс для добавления всех наших привязок вручную в коде, а не через конструктор. Это дает нам ряд преимуществ, в том числе общие поведенческие "исправления" для всех наших обязательных элементов управления. Он также позволяет нам использовать выражения LINQ для разрешения имен свойств и обеспечения того, чтобы привязки всегда были к действительным именам полей в источнике данных - если вы устанавливаете привязки через конструктор, а затем удаляете поле в своей схеме, вы не будете знать о проблеме до времени выполнения.
В случае комбо-боксов наш вспомогательный класс имел обходные пути для:
- Всегда устанавливать
DataSourceUpdateMode
в OnPropertyChanged
- Если привязано к SelectedItem или SelectedValue:
- Затем добавьте обработчик событий
Parse
для сброса привязанного значения к стандартному типу привязки, когда SelectedIndex
равен -1
- Когда источник данных изменяется для поля со списком после добавления привязки, тогда необходимо сбросить
SelectedIndex
в выпадающем списке (заметьте, по какой-то причине пришлось делать больше специальных вещей, когда привязано к SelectedValue
)