DataGridTextColumn 标题 DataTemplate [英] DataGridTextColumn Header DataTemplate
问题描述
这可能(希望)有一个微不足道或非常简单的答案.
This may (hopefully) have a trivial or very simple answer.
假设我想要为我的 DataGrid
自定义标题.我可以这样使用 DataTemplate
:
Suppose I want customized headings for my DataGrid
. I can use a DataTemplate
as so:
<DataGridTextColumn Binding="{Binding Name}">
<DataGridTextColumn.HeaderTemplate>
<DataTemplate>
<TextBlock Text="Header Text" TextWrapping="Wrap"/>
</DataTemplate>
</DataGridTextColumn.HeaderTemplate>
</DataGridTextColumn>
但是,如果有很多列,使用类似的东西就不会那么麻烦
However, if there are many columns it is less cumbersome to be able to use something like
<DataGridTextColumn Binding="{Binding Name}">
HeaderTemplate="{StaticResource ColumnHeaderTemplate}"
</DataGridTextColumn>
其中 ColumnHeaderTemplate
是我的自定义 DataTemplate
.我的问题是如何将标题文本"传递给 DataTemplate
?
where ColumnHeaderTemplate
is my custom DataTemplate
. My question is how do I pass the "Header Text" to the DataTemplate
?
推荐答案
您可以通过绑定 TextBlock.Text
来实现,也可以对 DataGrid<中的所有列标题进行绑定/code> 通过将标题的
ContentTemplate
更改为您的自定义 TextBlock
,然后将 Header
设置为您想要显示的文本.它也适用于自动生成的列
You can do it by binding TextBlock.Text
and you can do it either for all column headers in a DataGrid
by changing ContentTemplate
of header to be your custom TextBlock
and then just set Header
to text you want to display. It will also apply to automatically generated columns
<DataGrid ...>
<DataGrid.Resources>
<Style TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<TextBlock Text="{Binding}" TextWrapping="Wrap"/>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
</DataGrid.Resources>
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Name}" Header="Header Text">
</DataGrid.Columns>
</DataGrid>
或者也可以按列执行,只需更改标题模板中的 TextBlock.Text
即可使用绑定,如上所述
or can also do it per column just change TextBlock.Text
in you header template to use binding, as above
<TextBlock Text="{Binding}" TextWrapping="Wrap"/>
然后您的列可能如下所示:
and then you column could look like this:
<DataGridTextColumn
Binding="{Binding Name}"
HeaderTemplate="{StaticResource ColumnHeaderTemplate}"
Header="Header Text"/>
这篇关于DataGridTextColumn 标题 DataTemplate的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!