#wpf #listbox #datatemplate #datacontext #itemscontrol
#wpf #listbox #datatemplate #datacontext #itemscontrol
Вопрос:
У меня есть ListBox
, который заполняется ItemsSource
( ObservableCollection<MyClass>
) . Если у меня есть ссылка на конкретный ListBoxItem
объект, я могу легко найти его объект данных DataContext
, что даст мне соответствующий MyClass
объект.
Теперь я хочу изменить это. Я хочу получить ListBoxItem
то, что представляет конкретный экземпляр MyClass
объекта. Есть ли какой-нибудь способ добиться этого?
Комментарии:
1. Лично для меня вопрос неясен. Не могли бы вы добавить сегменты кода с пояснениями?
Ответ №1:
Используйте ContainerFromItem
метод списка ItemContainerGenerator
:
MyClass item = ...
var listBoxItem = (ListBoxItem)listBox.ItemContainerGenerator.ContainerFromItem(item);
Комментарии:
1. Я попробовал это на равнине
ItemsControl
, он дал мне равнинуContentPresenter
, которая имеет свойствоMyClass
inContent
. Знаете ли вы, как изменить этот «контейнер» по умолчанию для пользовательскихItemsControl
файлов?2. Вам нужно будет получить результат из ItemsControl (или ListBox и т. Д.) И переопределить метод GetContainerForItemOverride .