2016-10-06 2 views
0

У меня есть ListBox, который заполнен ItemsSource (ObservableCollection<MyClass>). Если у меня есть ссылка на конкретный ListBoxItem, я с легкостью найду его объект данных через DataContext, который даст мне соответствующий объект MyClass.WPF: Доступ к DataTemplate DataContext

Теперь я хочу обратить вспять это. Я хочу получить ListBoxItem, что конкретный экземпляр объекта MyClass представлен. Есть ли способ добиться этого?

+0

Для меня персонально quesion неясна. Не могли бы вы добавить сегменты кода с пояснениями? –

ответ

1

Используйте ContainerFromItem метод из ListBox-х ItemContainerGenerator:

MyClass item = ... 
var listBoxItem = (ListBoxItem)listBox.ItemContainerGenerator.ContainerFromItem(item); 
+0

Я попробовал это на простой 'ItemsControl', это дало мне простой« ContentPresenter », который имеет« MyClass »в свойстве« Content ». Вы знаете, как изменить этот «контейнер» по умолчанию для пользовательских 'ItemsControl'? – Jai

+1

Вы должны получить из ItemsControl (или ListBox и т. Д.) И переопределить [GetContainerForItemOverride] (https://msdn.microsoft.com/en-us/library/system.windows.controls.itemscontrol.getcontainerforitemoverride (v = vs.110) .aspx). – Clemens