Я пытаюсь добавить функцию поиска в ListBox, который будет прокручиваться вниз до искомого элемента.
У меня есть ListBox, который связан с ObservableCollection, который я заполнил кучей объектов RecipeNameDTO,Я легко могу найти объект в коллекции Предметов с помощью простого поиска.
string searchItem = tbSearchString.Text;
var recipenameitem = lbRecipeNames.Items.Cast<DTO.RecipeNameDTO>().Where(u => u.RecipeName.ToLower().Contains(searchItem.ToLower())).FirstOrDefault();
Я могу воспроизводимо найти предметы с помощью этого метода.
Однако, если я тогда попытаюсь найти контейнер объектаиспользуя ContainerFromItem, метод возвращает нулевое значение, если только объект не отображается в ListBox при выполнении метода:
ListBoxItem lbi = (ListBoxItem)lbRecipeNames.ItemContainerGenerator.ContainerFromItem(recipenameitem);
Я уверен (я думаю), что фактический объект существует вItemsCollection перед выполнением ContainerFromItem, потому что я использую ненулевой результат поиска, который я задокументировал в начале этого поста.Кроме того, я могу прокрутить ListBox вниз и найти искомый объект.
Должно быть, что-то вроде способа, которым ListBox кэширует объекты в ItemsCollection, который не позволяет ContainerFromItem возвращать контейнер.Есть ли исправление в моем коде (или понимание проблемы)?
Майкл