Есть ли обходной путь для отсутствующего метода FindName в DataTemplate Silverlight? - PullRequest
4 голосов
/ 13 ноября 2008

Согласно компилятору C # и документации Silverlight 2, Silverlight не предоставляет метод FindName для класса DataTemplate. Я хочу найти границу внутри ContentPresenter. Какой лучший способ в SilverLight 2?

Ответы [ 2 ]

3 голосов
/ 13 ноября 2008

Если граница находится внутри DataTemplate, а не ControlTemplate, то единственный способ, которым я мог сделать это в прошлом, - это использовать VisualTreeHelper, чтобы найти нужный мне элемент.

0 голосов
/ 13 ноября 2008

Не совсем уверен, что я понимаю сценарий, но так как вы упомянули DataTemplate, я предполагаю, что вы используете шаблон.

Если вы используете шаблон, тогда вы даете своей границе имя (x: Name = "border"), а затем переопределяете метод OnApplyTemplate. В этом методе вы используете GetTemplateChild и передаете имя, которое вы использовали. Это вернет ссылку на вашу границу.

Если вы не используете шаблон и имеете ссылку на ContentPresenter, то вы можете написать рекурсивную функцию, которая просматривает свойство Content дочернего элемента и, если он не является границей, вызывает ту же функцию для его содержимого. .

...