如何访问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 .
您可以使用ChildrenOfType()
方法…
var yourLink = templ.ChildrenOfType<HyperlinkButton>().FirstOrDefault( h => h.Name == "hlHeader" );