В общем, столкнулся я с NullReferenceException и, в результате (длительной) отладки, обнаружил, что обработчик событий ComboBox.SelectionChanged вызывает метод-обработчик при старте приложения.
Разметка ComboBox:
По идее такого не должно быть, или я ошибаюсь? Если нужны какие-то части программного кода, пишите, отвечу.
Ответ
По умолчанию ни один элемент не выделен. При этом SelectedIndex равен -1
Если вы меняете его на 0, то, разумеется, вызовется обработчик — вы ведь сами это попросили!
Если это нежелательно, можно сделать, например, следующее:
Вы можете завести булев флаг, и взвести его в конструкторе, после InitializeComponent (этот метод считывает и интерпретирует XAML). Флаг можно проверить в обработчике.
Вы можете подписаться на изменения в code-behind вручную, после InitializeComponent
Вы можете проанализировать в обработчике предыдущее состояние выделенного элемента, заглянув в SelectionChangedEventArgs
Вы можете сделать код обработчика более общим, чтобы он не падал, будучи вызванным в момент, когда ни один элемент не отмечен.
Я бы порекомендовал попробовать последний вариант.
Комментариев нет:
Отправить комментарий