WPF DataGrid 合并单元格
在网上搜索wpf合并单元格,一直没搜索到,没办法,只能自己想办法搞定了。其实就是DataGrid套DataGrid,为了方便支持Column拖动,在合并的DataGridColumn那一列的Header也放一个DataGrid,但是合并的这一个连续列中只支持一列的拖动,效果如下,上图


代码如下
首先定义两个模板,一个用于合并的Header显示
<DataTemplate x:Key="MergeHeader">
<DataGrid HorizontalAlignment="Stretch" HorizontalGridLinesBrush="Transparent" BorderThickness="0" Margin="0" CanUserReorderColumns="False" CanUserSortColumns="False" CanUserResizeColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="产品批号" Width="*" IsReadOnly="True" />
<DataGridTextColumn Header="生产日期" IsReadOnly="True" Width="100" />
<DataGridTextColumn Header="有效期至" IsReadOnly="True" Width="102" />
<DataGridTextColumn Header="tedsd" Width="126" IsReadOnly="True" />
<DataGridTextColumn Header="tesddff" Width="125" IsReadOnly="True"/>
</DataGrid.Columns>
<DataGrid.Resources>
<Style TargetType="DataGridColumnHeader">
<Setter Property="Template" Value="{StaticResource styleMergeHeader}"/>
</Style>
</DataGrid.Resources>
</DataGrid>
</DataTemplate>
另外一个模板用于显示合并明细信息,ItemsSource要绑定到你数据源的一个List属性,意思就是你把合并的明细信息放入到主DataGrid数据源的子List属性中,因为明细中不要显示Header所以把Header隐藏 <DataTemplate x:Key="MergeColumn">
<DataGrid Name="dgMergeGrid" ItemsSource="{Binding MerageData}" HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden" Loaded="dgMergeGrid_Loaded" BorderThickness="0,0,0,0" HorizontalAlignment="Center" HorizontalContentAlignment="Center" VerticalAlignment="Center" VerticalContentAlignment="Center" HeadersVisibility="None" AutoGenerateColumns="False" IsReadOnly="True">
<DataGrid.Columns>
<DataGridTextColumn Header="产品批号" Width="*" IsReadOnly="True" Binding="{Binding produceBatchNo}"> </DataGridTextColumn>
<DataGridTextColumn Header="生产日期" IsReadOnly="True" Width="100" Binding="{Binding produceDate}" />
<DataGridTextColumn Header="有效期至" IsReadOnly="True" Width="102" Binding="{Binding exprieDate}" />
<DataGridTextColumn Header="dfafa" Width="126" IsReadOnly="True" Binding="{Binding smallNum}" />
<DataGridTextColumn Header="fafsfdfd" Width="125" IsReadOnly="True" Binding="{Binding packUnit}" />
</DataGrid.Columns>
<DataGrid.Resources>
<Style TargetType="DataGrid">
<!--网格线颜色-->
<Setter Property="HorizontalGridLinesBrush">
<Setter.Value>
<SolidColorBrush Color="Transparent"/>
</Setter.Value>
</Setter>
<Setter Property="VerticalGridLinesBrush">
<Setter.Value>
<SolidColorBrush Color="LightBlue"/>
</Setter.Value>
</Setter>
</Style>
</DataGrid.Resources>
</DataGrid>
</DataTemplate> 然后在你的主DataGrid中的显示明细信息的列设置模板就可以了
<DataGridTemplateColumn Header="批次信息" Width="580" HeaderTemplate="{StaticResource MergeHeader}" CellTemplate="{StaticResource MergeColumn}">
<DataGridTemplateColumn.HeaderStyle>
<Style TargetType="DataGridColumnHeader">
<Setter Property="Background" Value="LightBlue"></Setter>
</Style>
</DataGridTemplateColumn.HeaderStyle>
</DataGridTemplateColumn>
WPF DataGrid 合并单元格的更多相关文章
- Silverlight的DataGrid合并单元格
现在也不知道还有没有同学做Silverlight开发了,我是一个Silverlight菜鸟,遇到问题也很难百度查到.就简单的记录一下这两天遇到的问题,并做了一个简单的小Demo,希望能够帮助到其他同学 ...
- JS实现EasyUI ,Datagrid,合并单元格功能
为了实现datagrid的合并单元格效果,datagrid的数据加载方式肯定是要写在JS文件内部的. 一:在JS内部添加Datagrid数据加载方法如下: $("#id").dat ...
- DataGrid合并单元格(wpf)
在网上搜索wpf合并单元格,一直没搜索到,没办法,只能自己想办法搞定了.其实就是DataGrid套DataGrid,为了方便支持Column拖动,在合并的DataGridColumn那一列的Heade ...
- easyui datagrid 合并单元格
整理以前做的东西,这个合并单元格的问题再新浪博客也写过了..... 下面这段代码是列表数据 //载入排放系数管理报表数据 function LoadEmissionReportData() { //获 ...
- C# DataGrid合并单元格
1.栏位枚举 private enum DataGridColumn { ROWNUM = , EMPID, EMPNAME, SEX, SALARY, ADRRESS, PHONE, TEL, PO ...
- 基于EasyUi的datagrid合并单元格JS写法
$('#dg').datagrid({ width: 'auto', height: 'auto', scrollbarSize: , queryParams: {}, url: 'kkkk', co ...
- Merge Cells for DataGrid 合并单元格
只适合不分页的固定行列的表格 <script type="text/javascript"> function onLoadSuccess(data){ var mer ...
- WPF DataGrid复制单元格问题
当复制出现 以下错误时:System.Runtime.InteropServices.COMException (0x800401D0),这是在WPF剪贴板程序错误. 解决方法:则在需要在App.xa ...
- wpf datagrid 的单元格内容超出列宽度
---恢复内容开始--- <Window x:Class="WpfApplication2.MainWindow" xmlns="http://schemas.mi ...
随机推荐
- task_struct
Linux中task_struct用来控制管理进程,结构如下: struct task_struct { //说明了该进程是否可以执行,还是可中断等信息 volatile long state; ...
- E8.Net 工作流二次开发架构平台
一. 产品简介 E8.Net工作流开发架构是基于微软.Net技术架构的工作流中间件产品,是国内商业流程管理(BPM)领域在.Net平台上的领先产品,是快速搭建流程管理解决方案的二次开 ...
- iOS面试题16719-b
1. 反转二叉树,不用递归 /*** Definition for a binary tree node.* public class TreeNode {* int val;* Tr ...
- DateTimePicker:jQuery日期和时间插件
点击在线预览效果 点击下载该插件 下面是效果截图:
- bzoj 1138: [POI2009]Baj 最短回文路 dp优化
1138: [POI2009]Baj 最短回文路 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 161 Solved: 48[Submit][Sta ...
- hdu 3018
欧拉回路的题: 主要利用的是并查集,为了节省时间,压缩了它的路径: 代码: #include<cstdio> #include<cstring> #define maxn 10 ...
- Ubuntu使用wget下载jdk问题
使用以下命令可下载成功,否则下载下来的可能是一个html文档. wget --no-cookies --no-check-certificate --header "Cookie:gpw_e ...
- Druid :大数据实时处理的开源分布式系统(1)
引言 Druid 是一个快速,近实时的查询海量只读数据的系统.Druid 的目标是可用性要达到100%,即使在部署新代码,或者某些节点 down 机的情况下. Druid 目前支持的单表查询方式和 D ...
- TIPSO--基于JQUERY的消息提示框插件,用起来蛮顺手
项目产品经理要求, 呵呵,关于描述,十个字以内的,直接显示,多于十个字的,用消息框提示: 相关模板及JS如下: $(function() { $('.tip').tipso({ useTitle: f ...
- 【BZOJ 2005】[Noi2010]能量采集 (容斥原理| 欧拉筛+ 分块)
能量采集 Description 栋栋有一块长方形的地,他在地上种了一种能量植物,这种植物可以采集太阳光的能量.在这些植物采集能量后,栋栋再使用一个能量汇集机器把这些植物采集到的能量汇集到一起. 栋栋 ...