Изменение свойства ListBox ItemsSource при выделении элемента приводит к исключению IndexOutOfRange - PullRequest
0 голосов
/ 02 ноября 2010

Если я изменяю ItemsSource свойство ListBox, когда элемент выбран, я получаю исключение IndexOutOfRange, потому что свойство SelectedIndex устанавливается при выборе элемента. Если в ListBox элемент не выбран, исключение не вызывается, но даже если для свойства SelectedItem задано значение NULL до изменения ItemsSource, исключение все равно возникает, если элемент был выбран, поскольку свойство SelectedIndex по-прежнему имеет значение .

Есть ли решение или способ решения этой проблемы?

Редактировать: Вот пример кода, потому что эта проблема возникает, только если я применяю фильтр Contains в своем выражении LINQ к объектам, И в ListBox выбирается элемент ... MyList - это List<> объектов CLR. ..

lstMyList.ItemsSource = MyList.Where(i => i.TypeId == 1);

Это отлично работает. Этот модифицированный запрос LINQ также работает нормально (если элемент не выбран), но если элемент выбран, я получаю IndexOutOfRangeException

lstMyList.ItemsSource = MyList.Where(i => i.TypeId == 1 && i.DisplayName.Contains(someString));

Если я перенаправлю этот запрос LINQ в var или список объектов CLR, запрос будет работать нормально, но когда я пытаюсь сделать его ItemsSource моего ListBox, я получаю исключение (даже если я создаю этот var или список CLR объект ItemsSource моего ListBox вместо этого).

1 Ответ

1 голос
/ 02 ноября 2010

Просто установите SelectedIndex в -1


РЕДАКТИРОВАТЬ: ОК, попробуйте вместо этого:

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