首先定义两个模板,一个用于合并的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>
转载于:https://www.cnblogs.com/renzhendewo/p/4238757.html
原文链接:
http://www.cnblogs.com/renzhendewo/p/4238757.html
思路说明:这是两个
DataGrid
,没有嵌套,位置和高度保持一致,在加上ScrollViewer滚动条,这就像是在一个
DataGrid
中。
因为最外层有透明的Border,所以没有办法去点击任何一个
单元
格
,也选中不了。
也可以将最层的Border去掉,但是这样一来,鼠标便不能在窗体的任意位置进行滚动。选中
单元
格
的时候不会选择到两个
Datagrid
的...
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="625">
一、在学习新的项目当中,维修资料模块需要用到
单元
格
合并
的功能,样式如下图所示
二、刚开始也是不知道怎么做的,通过在网上查找,发现大多都是写了怎么
合并
表头的。不过还是让我发现了一篇能用的文献,准确地说不应该叫
合并
而应该叫
单元
格
拆分,仔细研究后把它改造成能适应MVVM框架的模式。
1、XAML 表
格
使用
DataGrid
TemplateColumn标签,首先数据正常使用MVVM的双向绑定,而检测结果和后续步骤列的
单元
格
上下拆分,同时使用两个TextBlock绑定数据,如果需要动态的显示和隐藏只需在Visibi
在使用
datagrid
的时候,有很多情况下,都需要
合并
表头,多行表头之类的操作。这就需要我们自定义列了。本文给出一个思路,可以实现此需要,只是本人对这个研究不很明白,只是只是实现,仅此而已...
早一段时间又一次出差青海省西宁市;回来又是总结又是各种琐事,也没顾得上去分享点东西;大周末的就在家分享一下,这二天再次基于ListBox实现的
合并
单元
格
的效果:1、ListBox嵌套ListBox的前台布局:<ListBox ItemsSource="{Binding LCPListData}" x:Name="ManufacturerListBox"
出处:http://elevenwolf.cnblogs.com/articles/18609.html有时,我们要把一列中内容相同的
单元
格
合并
起来。如下图: 此主题相关图片如下:
合并
后的效果图: 此主题相关图片如下:下面就说说怎么实现的: Sub SpanGrid() Dim i As Integer Dim j As Integer Dim in