这可能(希望)有一个简单或非常简单的答案。
假设我想要DataGrid
的自定义标题。我可以使用DataTemplate
:
<DataGridTextColumn Binding="{Binding Name}">
<DataGridTextColumn.HeaderTemplate>
<DataTemplate>
<TextBlock Text="Header Text" TextWrapping="Wrap"/>
</DataTemplate>
</DataGridTextColumn.HeaderTemplate>
</DataGridTextColumn>
但是,如果有很多列,那么使用
之类的东西就不那么麻烦了<DataGridTextColumn Binding="{Binding Name}">
HeaderTemplate="{StaticResource ColumnHeaderTemplate}"
</DataGridTextColumn>
其中ColumnHeaderTemplate
是我的自定义DataTemplate
。我的问题是如何传递&#34;标题文本&#34;到DataTemplate
?
答案 0 :(得分:12)
您可以通过绑定TextBlock.Text
来执行此操作,并且可以通过将标题的DataGrid
更改为您的自定义ContentTemplate
来为TextBlock
中的所有列标题执行此操作然后只需将Header
设置为您要显示的文本。它也适用于自动生成的列
<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
即可使用绑定,如上所述
<TextBlock Text="{Binding}" TextWrapping="Wrap"/>
然后你的列看起来像这样:
<DataGridTextColumn
Binding="{Binding Name}"
HeaderTemplate="{StaticResource ColumnHeaderTemplate}"
Header="Header Text"/>