wpf - DataGridTextColumn 标题数据模板

标签 wpf xaml

这可能(希望)有一个微不足道或非常简单的答案。

假设我想要为我的 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/

相关文章:

c# - WPF 命令 - 从 Window 和 UserControl 调用,相同的处理程序

c# - WPF 弹出控件 - 查找 X、Y 坐标

c# - 将 ReactiveList<enum> 绑定(bind)到组合框

c# - 如何在 XAML 转换器中指定格式文化

c# - 如何触发 WPF 上下文菜单的关闭动画?

c# - DataGrid.Resources 可以在代码后面设置吗?

c++ - 将 SpriteBatch 与 Direct3D 和 XAML 结合使用

Grid.IsSharedSizeScope 和 ItemsControl.ItemTemplate 的 WPF 布局问题

c# - 在 WPF 中绘制样式线条

WPF C# 如何在代码中创建 THIS 绑定(bind)?