Как мне получить экземпляр шаблонного элемента из привязанного к базе данных ItemsControl?(WPF)
-
19-08-2019 - |
Вопрос
У меня есть <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 имя, вы должны быть правы.