WPF - Как получить доступ к элементу управления в шаблонной ячейке GridView - PullRequest
0 голосов
/ 02 ноября 2018

Здесь есть похожие темы, но ни одна из резолюций мне не помогла.

У меня есть следующее:

<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». Опять же, здесь есть несколько дискуссий по этому поводу, но никто не помог. Я чувствую, что чего-то глупо не хватает. Это должно быть выполнимо.

Заранее благодарим за любую помощь, которую вы можете себе позволить.

1 Ответ

0 голосов
/ 03 ноября 2018
...