Здесь есть похожие темы, но ни одна из резолюций мне не помогла.
У меня есть следующее:
<ControlTemplate x:Key="PlateWellControlTemplate"
TargetType="{x:Type ContentControl}">
<Grid x:Name="PART_stateGrid"
Margin="0,0,5,0">
<Ellipse Fill="#FF252526"
MinWidth="34"
MinHeight="34"
HorizontalAlignment="Center"
VerticalAlignment="Center"/>
<Ellipse x:Name="PART_stateControl"
Fill="#FFE6E6E6"
MinWidth="32"
MinHeight="32"
HorizontalAlignment="Center"
VerticalAlignment="Center"/>
<Label FontWeight="Bold"
FontFamily="Verdana"
Foreground="Black"
Background="#00000000"
HorizontalAlignment="Center"
HorizontalContentAlignment="Center"
VerticalAlignment="Center"
Content=""/>
</Grid>
</ControlTemplate>
Используется здесь:
<DataGridTemplateColumn Header="2">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Grid Tag="{Binding WellX2}"
x:Name="wellX2"
MouseDown="well_Click">
<ContentControl Template="{DynamicResource PlateWellControlTemplate}"/>
Затем доступ осуществляется здесь в коде позади:
DataTemplate cellTemplate = (DataTemplate)cell.Template.FindName("PART_stateControl", cell);
Где «ячейка» - это ненулевое значение DataGridCell, использующее шаблон. Приведенная выше строка всегда возвращает ноль, и я не понимаю, почему. Я также пытался использовать ControlTemplate и ContentPresenter.
Мне нужна ссылка на Ellipse ("PART_StateControl") в DataGridCell, который мне передали, так как мне нужно изменить одно из его свойств. Но в целом, как мне получить именованные элементы в шаблоне ContentControl? Все это инициируется событием щелчка в родительском элементе управления Grid, указанном в DataGridTemplateColumn.CellTemplate, который называется «wellX2». Опять же, здесь есть несколько дискуссий по этому поводу, но никто не помог. Я чувствую, что чего-то глупо не хватает. Это должно быть выполнимо.
Заранее благодарим за любую помощь, которую вы можете себе позволить.