我将以下样式应用于我的DataGridColumns(通过他们的HeaderStyle
属性):
<Style x:Key="MyHeaderStyle" TargetType="DataGridColumnHeader">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<TextBlock Text="???" />
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
相同的样式应用于每一列,但我需要一些方法来改变内容(例如TextBlock文本),具体取决于它是哪一列。我相信DataGridColumnHeader没有自己的绑定,所以我怎么能实现这个呢?列数会有所不同,因此我不能为每个列创建单独的样式。
答案 0 :(得分:1)
使用TemplateBinding - 它允许您伸出ControlTemplate以使用此控件模板获取有关实际控件的信息。我的示例将文本块绑定到以DataGridColumHeader的正常方式声明的内容。
<Style x:Key="ColumnHeaderStyle" TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="DataGridColumnHeader">
<TextBlock Text="{TemplateBinding Content}"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>