Как получить экземпляр шаблонного элемента из ItemsControl с привязкой к данным? (WPF) - PullRequest
2 голосов
/ 05 декабря 2008

У меня есть <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.

1 Ответ

2 голосов
/ 05 декабря 2008

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

...