如何访问Silverlight DataGrid列标题模板中的控件

本文关键字:标题 控件 DataGrid 何访问 访问 Silverlight | 更新日期: 2023-09-27 18:18:47

我有一个要求,其中列头是超链接和超链接的内容设置在后面的代码。

这是我的HeaderTemplate样式的数据网格列。

<Style x:Name="dataGridHeaderCenterStyleWithLink" TargetType="dataprimitives:DataGridColumnHeader">
    <Setter Property="Foreground" Value="#FF000000" />
    <Setter Property="HorizontalContentAlignment" Value="Center" />
    <Setter Property="VerticalContentAlignment" Value="Center" />
    <Setter Property="FontWeight" Value="Bold" />
    <Setter Property="IsTabStop" Value="False" />
    <Setter Property="SeparatorBrush" Value="#FFC9CACA" />
    <Setter Property="Padding" Value="2" />        
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="dataprimitives:DataGridColumnHeader">
                <Grid Name="Root">
                    <StackPanel>
                        <HyperlinkButton x:Name="hlHeader" Content="Command 0" HorizontalAlignment="Center" MinWidth="20"   Tag="Title"  />
                    </StackPanel>
                </Grid>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

因此,在代码中,我想访问Hyperlink按钮并根据它所在的列设置Content和Click事件。我在头模板中访问了ControlTemplate。但不知道如何访问控件模板中的超链接按钮。

foreach (DataGridColumn c in grdData.Columns) {
                DataGridTemplateColumn xx = (DataGridTemplateColumn)c;
                Style sty = xx.HeaderStyle;
                Setter stt = sty.Setters[7] as Setter;
                ControlTemplate templ = stt.Value as ControlTemplate;
                ?????
            }

感谢任何帮助/建议?

谢谢。

Nalini .

如何访问Silverlight DataGrid列标题模板中的控件

您可以使用ChildrenOfType()方法…

var yourLink = templ.ChildrenOfType<HyperlinkButton>().FirstOrDefault( h => h.Name == "hlHeader" );