我要求列标题是超链接,超级链接的内容在后面的代码中设置。
这是我的数据网格列的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>
因此,在代码中,我想访问“超链接”按钮并根据它所在的列设置“内容”和“单击”事件。我就在“标题模板”中访问ControlTemplate。但无法弄清楚如何访问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;
?????
}
感谢任何帮助/建议???
谢谢你。娜莉妮。
答案 0 :(得分:0)
您可以使用ChildrenOfType()
方法..
var yourLink = templ.ChildrenOfType<HyperlinkButton>().FirstOrDefault( h => h.Name == "hlHeader" );