Combobox с нулевым значением - привязка SelectedItem - PullRequest
1 голос
/ 03 марта 2010

Я хотел бы иметь комбинированный список с вариантами выбора городов, один из вариантов - пустой (без города) Источник предметов привязан к списку объектов "Город". Список содержит нулевое значение для представления пустой опции. SelectedItem привязывается к свойству типа "Город". Все работает, кроме ситуации, когда в поле со списком выбрана пустая опция. Свойство, привязанное к SelectedItem, не обновляется с нулевым значением, но сохраняет предыдущий выбор. Как я могу решить это?

спасибо за ответ Грег

1 Ответ

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

Это не мой опыт. У меня есть следующий 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 после проверки типа.

Другое, лучшее решение - рассмотреть вопрос о том, имеет ли смысл помещать пустой город в связанный список. Вы могли бы удалить это или иметь специальный город со специальным названием, которое будет представлять нуль?

...