Как мне получить экземпляр шаблонного элемента из привязанного к базе данных ItemsControl?(WPF)

StackOverflow https://stackoverflow.com/questions/342790

Вопрос

У меня есть <ItemsControl> с обычаем <DataTemplate> (а также обычай <ItemsPanelTemplate> это всего лишь WrapPanel), связанный через ItemsSource к простому наблюдаемому набору строк.

В DataTemplate состоит просто из экземпляра пользовательского UserControl чьи свойства привязаны к строке через {Binding}.

Проблема в том, что, поскольку мои элементы данных представляют собой просто строки, мне нужно получить доступ к экземплярам моего UserControl непосредственно программно, но я, кажется, не могу понять, как это сделать!

Я пытался:

var item = tagBar.Items[ tagBar.Items.Count - 1 ];

...но это просто возвращает строку.Также:

var item2 = tagBar.ItemContainerGenerator.ContainerFromIndex( tagBar.Items.Count - 1 );

...возвращает ContentPresenter, и я не могу понять , что делать с ContentPresenter чтобы добраться до экземпляра моего UserControl.

??

Это похоже на этот вопрос, но на этот вопрос никогда не было дано правильного ответа, и он также был специфичен для Silverlight , тогда как это WPF.

Это было полезно?

Решение

Ответ, который я опубликовал сюда , сюда имеет дело с фокусировкой элемента внутри DataTemplate, но он должен предоставлять необходимый вам код.Это включает в себя использование метода FindName в вашем DataTemplate для поиска элемента управления внутри него.Если вы дадите своему UserControl имя, вы должны быть правы.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top