Если я изменяю 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 вместо этого).