Привязка SelectedItem в списке к KeyValuePair <> - PullRequest
1 голос
/ 06 октября 2011

У меня есть список, связанный с классом ObservableDictionary (пользовательский класс, опущен для краткости).И это прекрасно работает, за исключением привязки на SelectedItem.У меня есть следующее свойство, привязанное к selectedItem объекта ListBox.

public KeyValuePair<Bumpstop, BumpStopOptions> SelectedBumpstop
    {
        get
        {
            return this.selectedBumpstop;
        }
        set
        {
            this.selectedBumpstop = value;
            this.OnPropertyChanged("SelectedBumpstop");
        }
    }

Когда я выбираю элемент в списке, он попадает в свойство set и работает.Когда я отменяю выбор всего, ListBox получает вокруг себя RedBorder, указывающий на ошибку привязки, и не устанавливает для свойства SelectedBumpstop значение null, как я ожидал.Почему он не устанавливает его в ноль?

1 Ответ

1 голос
/ 06 октября 2011

Красная граница не является ошибкой привязки (в смысле ошибок привязки, найденных в поле «Вывод VS»), это ошибка проверки.

Привязки автоматически проверяют, является ли новое значение приемлемым для типа источника привязки (в данном случае KeyValuePair). Не выбранное значение будет означать null как выбранное значение, что недопустимо для KeyValuePair - это структура, которая является типом значения, поэтому не может иметь значение null. Таким образом, проверка не пройдена, и значение не загружено в источник.

Создание типа nullable (KeyValuePair<Bumpstop, BumpStopOptions>?) исправит это, но может иметь последствия для вашего другого кода, поэтому тщательно обдумайте это (возможно, вам придется добавлять проверки недействительности везде, где используется свойство ).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...