WPF-如何在GridView模板化的单元格中访问控件

时间:2018-11-02 13:58:14

标签: wpfdatagrid

这里有类似的主题,但是所有决议都没有帮助我。

我有以下内容:

<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);

其中“单元格”是使用模板的非null的DataGridCell。上面的行始终返回null,但我不明白为什么。我也尝试过使用ControlTemplate和ContentPresenter。

我需要的是对DataGridCell中的椭圆(“ PART_StateControl”)的引用,因为我需要更改其中一个属性。但总的来说,如何获得ContentControl模板中的命名项目?这全部由DataGridTemplateColumn.CellTemplate(在此称为“ wellX2”)中引用的父Grid控件上的click事件触发。同样,这里有一些关于此的讨论,但没有任何帮助。我感觉好像有些愚蠢的缺失。这必须可行。

在此先感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分:0)