这可能(希望)有一个微不足道或非常简单的答案。
假设我想要为我的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
发布于 2014-11-02 03:39:00
可以通过绑定TextBlock.Text来实现,也可以对DataGrid中的所有列标题执行此操作,方法是将header的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"/>https://stackoverflow.com/questions/26692234
复制相似问题