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