在网上搜索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 合并单元格的更多相关文章

  1. Silverlight的DataGrid合并单元格

    现在也不知道还有没有同学做Silverlight开发了,我是一个Silverlight菜鸟,遇到问题也很难百度查到.就简单的记录一下这两天遇到的问题,并做了一个简单的小Demo,希望能够帮助到其他同学 ...

  2. JS实现EasyUI ,Datagrid,合并单元格功能

    为了实现datagrid的合并单元格效果,datagrid的数据加载方式肯定是要写在JS文件内部的. 一:在JS内部添加Datagrid数据加载方法如下: $("#id").dat ...

  3. DataGrid合并单元格(wpf)

    在网上搜索wpf合并单元格,一直没搜索到,没办法,只能自己想办法搞定了.其实就是DataGrid套DataGrid,为了方便支持Column拖动,在合并的DataGridColumn那一列的Heade ...

  4. easyui datagrid 合并单元格

    整理以前做的东西,这个合并单元格的问题再新浪博客也写过了..... 下面这段代码是列表数据 //载入排放系数管理报表数据 function LoadEmissionReportData() { //获 ...

  5. C# DataGrid合并单元格

    1.栏位枚举 private enum DataGridColumn { ROWNUM = , EMPID, EMPNAME, SEX, SALARY, ADRRESS, PHONE, TEL, PO ...

  6. 基于EasyUi的datagrid合并单元格JS写法

    $('#dg').datagrid({ width: 'auto', height: 'auto', scrollbarSize: , queryParams: {}, url: 'kkkk', co ...

  7. Merge Cells for DataGrid 合并单元格

    只适合不分页的固定行列的表格 <script type="text/javascript"> function onLoadSuccess(data){ var mer ...

  8. WPF DataGrid复制单元格问题

    当复制出现 以下错误时:System.Runtime.InteropServices.COMException (0x800401D0),这是在WPF剪贴板程序错误. 解决方法:则在需要在App.xa ...

  9. wpf datagrid 的单元格内容超出列宽度

    ---恢复内容开始--- <Window x:Class="WpfApplication2.MainWindow" xmlns="http://schemas.mi ...

随机推荐

  1. Educational Codeforces Round 6 D. Professor GukiZ and Two Arrays

    Professor GukiZ and Two Arrays 题意:两个长度在2000的-1e9~1e9的两个序列a,b(无序);要你最多两次交换元素,使得交换元素后两序列和的差值的绝对值最小:输出这 ...

  2. NotePad++更改背景颜色

    白色的编辑框看得眼睛不舒服,怎么样更改NotePad++的背景颜色使眼睛更舒服些? 1.设置--语言格式设置 2.设置背景色 “背景色”一栏,选择背景色颜色   “使用全局背景色”一栏要打上√,否则无 ...

  3. How to new a screen in linux

    screen -R -D: create a screen Ctrl + A & Ctrl + D: leave a screen

  4. 【BZOJ3439】 Kpm的MC密码 (TRIE+主席树)

    3439: Kpm的MC密码 Description 背景 想Kpm当年为了防止别人随便进入他的MC,给他的PC设了各种奇怪的密码和验证问题(不要问我他是怎么设的...),于是乎,他现在理所当然地忘记 ...

  5. POJ_1220_Nmber Sequence

    上网查了一下进制转换的算法,发现一个性能比较好的:m进制转换成n进制,先用例如62进制ABC转换成10进制,就是用余位c(第一个数余位数值为0)乘以原基数from,加上A表示的数值,然后得到一个数,对 ...

  6. Android开源项目发现---Menu 篇(持续更新)

    1. MenuDrawer 滑出式菜单,通过拖动屏幕边缘滑出菜单,支持屏幕上下左右划出,支持当前View处于上下层,支持Windows边缘.ListView边缘.ViewPager变化划出菜单等. 项 ...

  7. perl unload gbk oracle 数据库

    perl unload gbk Oracle 数据库 use Encode; if ( $#ARGV < 0 ){ print "请输入一个文件\n"; exit(-1); ...

  8. 17.2.2 Replication Relay and Status Logs 复制Relay 和状态日志;

    17.2.2 Replication Relay and Status Logs 复制Relay 和状态日志: 17.2.2.1 The Slave Relay Log 17.2.2.2 Slave ...

  9. win7重装系统的配置步骤

    0. 关闭休眠功能,在开始菜单的运行里输入powercfg -h off 指令,关闭休眠,此文件实际大小和物理内存是一样的,大约可以为C盘释放1-3G的空间. 1. 在Win7桌面上显示“我的电脑” ...

  10. Android 解决安装Egit时Egit Mylyn和org.eclipse.team.core报错

    为了让Aptana支持GitHub,需要安装Egit,但在的时候碰到两个错误,一个是关于缺少EGit Mylyn另一个是缺少org.eclipse.egit.import.feature.group. ...