У меня есть ListBox с объектами Foo, и на основании некоторых событий я отключаю / включаю ListBoxItems в ListBox.Используя свойство ListBox.Items, я нахожу объекты Foo, и из того, что я понял, мне нужно использовать следующую функцию, чтобы получить контейнер ListBoxItem для Foo.Правильный?
foreach (var item in Items)
{
var lbi = ItemContainerGenerator.ContainerFromItem(foo) as ListBoxItem;
// do something
}
На самом деле у меня есть пользовательский элемент управления FilteringListBox, который наследует ListBox и добавляет к нему дополнительное свойство.Приведенный выше код находится в коде пользовательского элемента управления и прекрасно работает, когда завершается создание FilteringListBox.Моя проблема, однако, заключается в том, что я пытаюсь сделать это, когда какое-то свойство связано.У меня есть свойство FilteringCollection и PropertyCallback срабатывает, когда это связано.В этом обратном вызове я буду хранить FilteringCollection, но я также сделаю начальную фильтрацию - прогоняю коллекцию множеств и отключу любой ListBoxItem, представляющий Foo, который находится в FilteringCollection.
Здесь у меня проблемы.Я нахожу все Foos, поэтому я проверяю, что установлен ItemSource, но, выполнив ItemContainerGenerator.ContainerFromItem, я получаю значение NULL.Как будто ListBoxItems еще не созданы.Не так ли?Вот мой переплет:
<custom:FilteringListBox ItemsSource="{Binding AvailableFoos}" FilteringCollection="{Binding AlreadyIncludedFoos}"></custom:FilteringListBox>
Итак;либо: Как я могу получить ListBoxItems на «время привязки»?Или - если я не могу;Есть ли какое-то событие, которое я могу переопределить, которое говорит мне, что ListBox завершил создание ListBoxItems?Пробовал Инициализировать без удачи ...