Это не мой опыт. У меня есть следующий код XAML:
<TextBlock Text="{Binding ElementName=_cbx, Path=SelectedItem}" Margin="20" />
<ComboBox x:Name="_cbx" ItemsSource="{Binding Cities}" HorizontalAlignment="Left" SelectionChanged="OnNewCity" />
Я создал свойство, называемые городами в коде-за в виде списка и заполнить его со значениями, которые являются строками нулей. Когда выбрано значение null, SelectedItem является ComboBoxItem.
В OnNewCity я заполняю другое текстовое поле на основе SelectedItem, и я вижу то же поведение.
Не могли бы вы рассказать больше о своем XAML и коде?
Редактировать после автора комментария:
Спасибо за XAML. Я использовал тот же самый, с классом City вместо списка строк, и я получаю такое же поведение, как и вы. Точка прерывания в SelectedCity показывает, что сеттер не вызывается. Когда объект City имеет значение null, свойство SelectedItem имеет тип ComboBoxItem, и поэтому я предполагаю, что WPF ищет свойство SelectedCity типа, совместимого с ComboBoxItem, для вызова setter. В этом случае он не может найти его. Я изменил свой код для установки SelectedCity объекта type. В этом случае сеттер вызывается даже для нулевого города!
Я не уверен, что изменение типа SelectedCity - это хороший способ. Нельзя переоценивать объект типа. Но у вас может быть другое свойство, используемое только в привязке (и типа объекта), которое правильно устанавливает значение SelectedCity после проверки типа.
Другое, лучшее решение - рассмотреть вопрос о целесообразности поместить нулевой город в связанный список. Не могли бы вы удалить это или иметь специальный город со специальным именем, которое будет представлять нуль?