这可能(希望)有一个微不足道或非常简单的答案。
假设我想要为我的 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
.我的问题是如何将“标题文本”传递给 DataTemplate
?
最佳答案
你可以通过绑定(bind)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
在你的标题模板中使用绑定(bind),如上<TextBlock Text="{Binding}" TextWrapping="Wrap"/>
然后您的列可能如下所示:
<DataGridTextColumn
Binding="{Binding Name}"
HeaderTemplate="{StaticResource ColumnHeaderTemplate}"
Header="Header Text"/>
关于wpf - DataGridTextColumn 标题数据模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26692234/