Поскольку шаблон может быть создан несколько раз, невозможно связать сгенерированный элемент с помощью x:Name
. Вместо этого вы должны найти именованный элемент в шаблоне, примененном к элементу управления.
Учитывая упрощенный XAML:
<ControlTemplate x:Key="MyTemplate">
<Ellipse x:Name="MyEllipse" />
</ControlTemplate>
Вы бы сделали что-то вроде этого:
var template = (ControlTemplate)FindResource("MyTemplate");
template.FindName("MyEllipse", myControl);
Или еще проще:
var ellipse = (Ellipse)myControl.Template.FindName("MyEllipse", myControl);
Вы можете прочитать о FrameworkTemplate.FindName
.
Некоторые примеры и обсуждение здесь , здесь и здесь .