示例:WPF中DataGrid简单设置合并列头

一、目的:应用DataGridTemplateColumn列模板,去拆分列头和单元格布局的方式设置列头合并样式


二、实现

效果如下

三、环境


VS2022

四、示例

应用DataGridTemplateColumn自定义列头信息和单元格信息

 <DataGrid AutoGenerateColumns="False" ItemsSource="{h:GetStudents Count=50}">
     <DataGrid.ColumnHeaderStyle>
         <Style TargetType="DataGridColumnHeader">
             <Setter Property="HorizontalAlignment" Value="Stretch"/>
             <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
         </Style>
     </DataGrid.ColumnHeaderStyle>
     <DataGrid.Columns>
         <DataGridTextColumn Width="Auto" Header="姓名" Binding="{Binding Name}"/>
         <DataGridTextColumn Width="Auto"  Header="邮箱" Binding="{Binding Emall}"/>
         <DataGridTemplateColumn  Width="Auto" >
             <DataGridTemplateColumn.HeaderTemplate>
                 <DataTemplate>
                     <Grid HorizontalAlignment="Stretch">
                         <Grid.ColumnDefinitions>
                             <ColumnDefinition/>
                             <ColumnDefinition/>
                         </Grid.ColumnDefinitions>
                         <Grid.RowDefinitions>
                             <RowDefinition/>
                             <RowDefinition/>
                         </Grid.RowDefinitions>
                         <Border  Grid.ColumnSpan="2" BorderBrush="LightGray" BorderThickness="0 0 0 1">
                             <TextBlock Text="基本信息" HorizontalAlignment="Center"/>
                         </Border>
                         <Border  Grid.Row="1" Grid.Column="0" BorderBrush="LightGray" BorderThickness="0 0 1 0">
                             <TextBlock Text="班级" HorizontalAlignment="Center"/>
                         </Border>
                         <TextBlock Text="地址" HorizontalAlignment="Center" Grid.Row="1" Grid.Column="1"/>
                     </Grid>
                 </DataTemplate>
             </DataGridTemplateColumn.HeaderTemplate>
             <DataGridTemplateColumn.CellTemplate>
                 <DataTemplate>
                     <UniformGrid Rows="1">
                         <Border  Grid.Row="1" Grid.Column="0" BorderBrush="Black" BorderThickness="0 0 1 0">
                             <TextBlock Text="{Binding Class}"/>
                         </Border>
                         <TextBlock Text="{Binding Address}"/>
                     </UniformGrid>
                 </DataTemplate>
             </DataGridTemplateColumn.CellTemplate>
         </DataGridTemplateColumn>
         <DataGridTextColumn Header="年龄" Binding="{Binding Age}"/>
         <DataGridTemplateColumn  Width="300" >
             <DataGridTemplateColumn.HeaderTemplate>
                 <DataTemplate>
                     <Grid HorizontalAlignment="Stretch">
                         <Grid.ColumnDefinitions>
                             <ColumnDefinition/>
                             <ColumnDefinition/>
                         </Grid.ColumnDefinitions>
                         <Grid.RowDefinitions>
                             <RowDefinition/>
                             <RowDefinition/>
                         </Grid.RowDefinitions>
                         <Border  Grid.ColumnSpan="2" BorderBrush="LightGray" BorderThickness="0 0 0 1">
                             <TextBlock Text="调查问卷" HorizontalAlignment="Center"/>
                         </Border>
                         <Border  Grid.Row="1" Grid.Column="0" BorderBrush="LightGray" BorderThickness="0 0 1 0">
                             <TextBlock Text="评分" HorizontalAlignment="Center"/>
                         </Border>
                         <TextBlock Text="电话" HorizontalAlignment="Center" Grid.Row="1" Grid.Column="1"/>
                     </Grid>
                 </DataTemplate>
             </DataGridTemplateColumn.HeaderTemplate>
             <DataGridTemplateColumn.CellTemplate>
                 <DataTemplate>
                     <UniformGrid Rows="1">
                         <Border  Grid.Row="1" Grid.Column="0" BorderBrush="Black" BorderThickness="0 0 1 0">
                             <TextBlock Text="{Binding Score}"/>
                         </Border>
                         <TextBlock Text="{Binding Tel}"/>
                     </UniformGrid>
                 </DataTemplate>
             </DataGridTemplateColumn.CellTemplate>
         </DataGridTemplateColumn>
     </DataGrid.Columns>
 </DataGrid>

五、需要了解的知识点

DataGridColumnHeader 类 (System.Windows.Controls.Primitives) | Microsoft Learn

DataGrid.ColumnHeaderStyleProperty Field (System.Windows.Controls) | Microsoft Learn

DataGridTemplateColumn 类 (System.Windows.Controls) | Microsoft Learn

六、源码地址

GitHub - HeBianGu/WPF-ControlDemo: 示例

GitHub - HeBianGu/WPF-ControlBase: Wpf封装的自定义控件资源库

GitHub - HeBianGu/WPF-Control: WPF轻量控件和皮肤库

七、了解更多

System.Windows.Controls 命名空间 | Microsoft Learn

https://github.com/HeBianGu

HeBianGu的个人空间-HeBianGu个人主页-哔哩哔哩视频

相关推荐

  1. wpf datagrid显示

    2024-06-17 18:54:08       37 阅读
  2. Wpf DataGrid ComboBox

    2024-06-17 18:54:08       36 阅读
  3. WPFDataGrid设置默认选中行

    2024-06-17 18:54:08       57 阅读
  4. WPF DataGrid 动态增加

    2024-06-17 18:54:08       57 阅读
  5. WPF应用32】WPFDataGrid控件详解与示例

    2024-06-17 18:54:08       32 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-17 18:54:08       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-17 18:54:08       101 阅读
  3. 在Django里面运行非项目文件

    2024-06-17 18:54:08       82 阅读
  4. Python语言-面向对象

    2024-06-17 18:54:08       91 阅读

热门阅读

  1. 如何访问寄存器

    2024-06-17 18:54:08       26 阅读
  2. 在Ubuntu上配置和设置防火墙UFW

    2024-06-17 18:54:08       31 阅读
  3. 网站为什么被攻击

    2024-06-17 18:54:08       29 阅读
  4. 充电学习—4、一次完整的调试

    2024-06-17 18:54:08       38 阅读
  5. 关于数据库存储【\】转义字符反斜杠丢失的问题

    2024-06-17 18:54:08       28 阅读
  6. 喜马拉雅项目调整

    2024-06-17 18:54:08       33 阅读
  7. 胡说八道(24.6.16)——数字电子技术以及通信杂谈

    2024-06-17 18:54:08       35 阅读
  8. Docker

    2024-06-17 18:54:08       21 阅读
  9. vue中ref与$parent/$children⽗⼦组件通信例子

    2024-06-17 18:54:08       31 阅读