大家好,我是小小张,这是人生20年的第一次博客,写的不好请大家指正,并且因为是工作时间很短,可能未必有大家理解的深刻,有什么问题欢迎大家指正;
好了,正式开始,首先我要说明,我这里所说的是视觉上的合并,就像是这样的,在视觉上像是合并了行列,其实并不是按照你们想的去做的,好吧,我表示并不知道你想的是啥,哈哈哈。
不开玩笑,方法是很简单的,在datagrid的列中,重写这一列的模板,在模板中重新布局就好啦。这个方法我说下自己遇到的问题:
1,注意上面图片的红色框部分是重写一列的模板得来的,所以实质上还是一列;
2,因此需要重写这一列的表头和下面显示部分,包括横线和纵向的线条哦;
现在就贴出代码供大家参考
<DataGrid Name="OverDateGrid" Style="{DynamicResource New_Default_DataGrid}" PreviewMouseLeftButtonDown="OverDateGrid_PreviewMouseLeftButtonDown"
LoadingRow="OverDateGrid_LoadingRow" CellEditEnding="OverDateGrid_CellEditEnding" ItemsSource="{Binding OverallConstructionPlanList}"
Margin="0 18 0 0">
<DataGrid.Columns>
<!--单选多选-->
<DataGridTemplateColumn Width="26" IsReadOnly="True" HeaderStyle="{DynamicResource DataGridColumnHeader_Style1}">
<DataGridTemplateColumn.HeaderTemplate>
<DataTemplate>
<CheckBox Name="checkall" Initialized="checkall_Initialized" Click="checkall_Click"></CheckBox>
</DataTemplate>
</DataGridTemplateColumn.HeaderTemplate>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox Name="checkBox" IsChecked="{Binding IsChecked}" VerticalAlignment="Center" HorizontalAlignment="Center" Click="checkBox_Click"></CheckBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<!--序号-->
<DataGridTemplateColumn Header="{DynamicResource langNumber}" Width="60">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock TextWrapping="Wrap" Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type DataGridRow}}, Path=Header}" HorizontalAlignment="Center" VerticalAlignment="Center" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Header="隧道名称" Width="100">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock
Text="{Binding Name,UpdateSourceTrigger=PropertyChanged}" ></TextBlock>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<ComboBox Style="{DynamicResource SysComboBox}"
ItemsSource="{Binding ElementName=OverDateGrid,Path=DataContext.StucturesEntLists}"
DisplayMemberPath="StuctureName" SelectionChanged="ComboBox_SelectionChanged"
Text="{Binding Name,UpdateSourceTrigger=PropertyChanged}" ></ComboBox>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Width="100" Header="单位" Binding="{Binding Unit,UpdateSourceTrigger=PropertyChanged}" ></DataGridTextColumn>
<DataGridTextColumn Width="100" Header="计划进尺" Binding="{Binding DesignQuantity,UpdateSourceTrigger=PropertyChanged}"></DataGridTextColumn>
<!--<DataGridTextColumn Width="100" Header="变更后数量" Binding="{Binding QuantityAfterChange,UpdateSourceTrigger=PropertyChanged}"></DataGridTextColumn>-->
<!--这里,看我看我,从这里开始写的哦,这里开始的-->
<DataGridTemplateColumn Width="600" CellStyle="{DynamicResource CellStyle_HeaderHB}">
<DataGridTemplateColumn.HeaderStyle>
<Style TargetType="DataGridColumnHeader">
<Setter Property="HorizontalContentAlignment" Value="Center"></Setter>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="DataGridColumnHeader">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"></RowDefinition>
<RowDefinition Height="1"></RowDefinition>
<RowDefinition Height="*"></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Border Background="#cccccc" Grid.Column="0" Grid.Row="1" Grid.ColumnSpan="5" ></Border>
<Border Background="#cccccc" Grid.Column="0" Grid.Row="0" Grid.RowSpan="3" Width="1" ></Border>
<Label HorizontalContentAlignment="Center" Content="剩余工程工期节点" Grid.ColumnSpan="4" FontSize="14" FontWeight="SemiBold" SnapsToDevicePixels="True"></Label>
<Label HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" Grid.Column="1" Grid.Row="2" Content="{DynamicResource langProjectDepartmentPlanStartTime}" BorderBrush="#cccccc" BorderThickness="0,0,1,0" FontSize="14" FontWeight="SemiBold" SnapsToDevicePixels="True"></Label>
<Label HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" Grid.Column="2" Grid.Row="2" Content="{DynamicResource langProjectDepartmentFinishedTime}" BorderBrush="#cccccc" BorderThickness="0,0,1,0" FontSize="14" FontWeight="SemiBold" SnapsToDevicePixels="True"></Label>
<Label HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" Grid.Column="3" Grid.Row="2" Content="业主要求开始时间" BorderBrush="#cccccc" BorderThickness="0,0,1,0" FontSize="14" FontWeight="SemiBold" SnapsToDevicePixels="True"></Label>
<Label HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" Grid.Column="4" Grid.Row="2" Content="业主要求完成时间" FontSize="14" FontWeight="Bold" SnapsToDevicePixels="True"></Label>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</DataGridTemplateColumn.HeaderStyle>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<UniformGrid Columns="4" Background="Transparent">
<Border Padding="0" BorderBrush="{DynamicResource Color_Border}" BorderThickness="0,0,1,0">
<TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" Text="{Binding ProjectDepartmentPlanStartTime,StringFormat='{}{0:yyyy年MM月dd日}',UpdateSourceTrigger=PropertyChanged}"></TextBlock>
</Border>
<Border Padding="0" BorderBrush="{DynamicResource Color_Border}" BorderThickness="0,0,1,0">
<TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" Text="{Binding ProjectPlanningFinishTime,StringFormat='{}{0:yyyy年MM月dd日}',UpdateSourceTrigger=PropertyChanged}"></TextBlock>
</Border>
<Border Padding="0" BorderBrush="{DynamicResource Color_Border}" BorderThickness="0,0,1,0">
<TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" Text="{Binding OwnerRequestToStart,StringFormat='{}{0:yyyy年MM月dd日}',UpdateSourceTrigger=PropertyChanged}"></TextBlock>
</Border>
<Border Padding="0" BorderBrush="{DynamicResource Color_Border}" BorderThickness="0,0,1,0">
<TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" Text="{Binding OwnerRequestsCompletionTime,StringFormat='{}{0:yyyy年MM月dd日}',UpdateSourceTrigger=PropertyChanged}"></TextBlock>
</Border>
</UniformGrid>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<UniformGrid Columns="4">
<Border Padding="0" BorderBrush="{DynamicResource Color_Border}" BorderThickness="1,0,1,0">
<Grid>
<!--<TextBlock Name="l1" Background="Transparent" Grid.Column="0" Text="{Binding Name}"></TextBlock>-->
<DatePicker Background="Transparent" Grid.Column="0" IsTodayHighlighted="True" SelectedDateFormat="Long" VerticalContentAlignment="Center"
SelectedDateChanged="DatePicker_SelectedDateChanged"
SelectedDate="{Binding ProjectDepartmentPlanStartTime,UpdateSourceTrigger=PropertyChanged}"></DatePicker>
</Grid>
</Border>
<Border Padding="0">
<Grid>
<DatePicker Background="Transparent" Grid.Column="0" IsTodayHighlighted="True" SelectedDateFormat="Long" VerticalContentAlignment="Center"
SelectedDateChanged="DatePicker_SelectedDateChanged_1"
SelectedDate="{Binding ProjectPlanningFinishTime,UpdateSourceTrigger=PropertyChanged}"></DatePicker>
<!--<TextBlock Name="l2" Background="Transparent" Grid.Column="0" Text="{Binding Age}"></TextBlock>-->
</Grid>
</Border>
<Border Padding="0" BorderBrush="{DynamicResource Color_Border}" BorderThickness="0,0,1,0">
<Grid>
<!--<TextBlock Name="l1" Background="Transparent" Grid.Column="0" Text="{Binding Name}"></TextBlock>-->
<DatePicker Background="Transparent" Grid.Column="0" IsTodayHighlighted="True" SelectedDateFormat="Long" VerticalContentAlignment="Center"
SelectedDateChanged="DatePicker_SelectedDateChanged_2"
SelectedDate="{Binding OwnerRequestToStart,UpdateSourceTrigger=PropertyChanged}"></DatePicker>
</Grid>
</Border>
<Border Padding="0">
<Grid>
<DatePicker Background="Transparent" Grid.Column="0" IsTodayHighlighted="True" SelectedDateFormat="Long" VerticalContentAlignment="Center"
SelectedDateChanged="DatePicker_SelectedDateChanged_3"
SelectedDate="{Binding OwnerRequestsCompletionTime,UpdateSourceTrigger=PropertyChanged}"></DatePicker>
<!--<TextBlock Name="l2" Background="Transparent" Grid.Column="0" Text="{Binding Age}"></TextBlock>-->
</Grid>
</Border>
</UniformGrid>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Width="100" Header="进度指标" Binding="{Binding SchedulePerformedIndex,UpdateSourceTrigger=PropertyChanged}"></DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
<!--这里,看我看我,从这里开始写的哦,这里开始的-->
<DataGridTemplateColumn Width="600" CellStyle="{DynamicResource CellStyle_HeaderHB}">
<DataGridTemplateColumn.HeaderStyle>
<Style TargetType="DataGridColumnHeader">
<Setter Property="HorizontalContentAlignment" Value="Center"></Setter>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="DataGridColumnHeader">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"></RowDefinition>
<RowDefinition Height="1"></RowDefinition>
<RowDefinition Height="*"></RowDefinition>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Border Background="#cccccc" Grid.Column="0" Grid.Row="1" Grid.ColumnSpan="5" ></Border>
<Border Background="#cccccc" Grid.Column="0" Grid.Row="0" Grid.RowSpan="3" Width="1" ></Border>
<Label HorizontalContentAlignment="Center" Content="剩余工程工期节点" Grid.ColumnSpan="4" FontSize="14" FontWeight="SemiBold" SnapsToDevicePixels="True"></Label>
<Label HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" Grid.Column="1" Grid.Row="2" Content="{DynamicResource langProjectDepartmentPlanStartTime}" BorderBrush="#cccccc" BorderThickness="0,0,1,0" FontSize="14" FontWeight="SemiBold" SnapsToDevicePixels="True"></Label>
<Label HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" Grid.Column="2" Grid.Row="2" Content="{DynamicResource langProjectDepartmentFinishedTime}" BorderBrush="#cccccc" BorderThickness="0,0,1,0" FontSize="14" FontWeight="SemiBold" SnapsToDevicePixels="True"></Label>
<Label HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" Grid.Column="3" Grid.Row="2" Content="业主要求开始时间" BorderBrush="#cccccc" BorderThickness="0,0,1,0" FontSize="14" FontWeight="SemiBold" SnapsToDevicePixels="True"></Label>
<Label HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}" Grid.Column="4" Grid.Row="2" Content="业主要求完成时间" FontSize="14" FontWeight="Bold" SnapsToDevicePixels="True"></Label>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</DataGridTemplateColumn.HeaderStyle>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<UniformGrid Columns="4" Background="Transparent">
<Border Padding="0" BorderBrush="{DynamicResource Color_Border}" BorderThickness="0,0,1,0">
<TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" Text="{Binding ProjectDepartmentPlanStartTime,StringFormat='{}{0:yyyy年MM月dd日}',UpdateSourceTrigger=PropertyChanged}"></TextBlock>
</Border>
<Border Padding="0" BorderBrush="{DynamicResource Color_Border}" BorderThickness="0,0,1,0">
<TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" Text="{Binding ProjectPlanningFinishTime,StringFormat='{}{0:yyyy年MM月dd日}',UpdateSourceTrigger=PropertyChanged}"></TextBlock>
</Border>
<Border Padding="0" BorderBrush="{DynamicResource Color_Border}" BorderThickness="0,0,1,0">
<TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" Text="{Binding OwnerRequestToStart,StringFormat='{}{0:yyyy年MM月dd日}',UpdateSourceTrigger=PropertyChanged}"></TextBlock>
</Border>
<Border Padding="0" BorderBrush="{DynamicResource Color_Border}" BorderThickness="0,0,1,0">
<TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" Text="{Binding OwnerRequestsCompletionTime,StringFormat='{}{0:yyyy年MM月dd日}',UpdateSourceTrigger=PropertyChanged}"></TextBlock>
</Border>
</UniformGrid>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
<DataGridTemplateColumn.CellEditingTemplate>
<DataTemplate>
<UniformGrid Columns="4">
<Border Padding="0" BorderBrush="{DynamicResource Color_Border}" BorderThickness="1,0,1,0">
<Grid>
<!--<TextBlock Name="l1" Background="Transparent" Grid.Column="0" Text="{Binding Name}"></TextBlock>-->
<DatePicker Background="Transparent" Grid.Column="0" IsTodayHighlighted="True" SelectedDateFormat="Long" VerticalContentAlignment="Center"
SelectedDateChanged="DatePicker_SelectedDateChanged"
SelectedDate="{Binding ProjectDepartmentPlanStartTime,UpdateSourceTrigger=PropertyChanged}"></DatePicker>
</Grid>
</Border>
<Border Padding="0">
<Grid>
<DatePicker Background="Transparent" Grid.Column="0" IsTodayHighlighted="True" SelectedDateFormat="Long" VerticalContentAlignment="Center"
SelectedDateChanged="DatePicker_SelectedDateChanged_1"
SelectedDate="{Binding ProjectPlanningFinishTime,UpdateSourceTrigger=PropertyChanged}"></DatePicker>
<!--<TextBlock Name="l2" Background="Transparent" Grid.Column="0" Text="{Binding Age}"></TextBlock>-->
</Grid>
</Border>
<Border Padding="0" BorderBrush="{DynamicResource Color_Border}" BorderThickness="0,0,1,0">
<Grid>
<!--<TextBlock Name="l1" Background="Transparent" Grid.Column="0" Text="{Binding Name}"></TextBlock>-->
<DatePicker Background="Transparent" Grid.Column="0" IsTodayHighlighted="True" SelectedDateFormat="Long" VerticalContentAlignment="Center"
SelectedDateChanged="DatePicker_SelectedDateChanged_2"
SelectedDate="{Binding OwnerRequestToStart,UpdateSourceTrigger=PropertyChanged}"></DatePicker>
</Grid>
</Border>
<Border Padding="0">
<Grid>
<DatePicker Background="Transparent" Grid.Column="0" IsTodayHighlighted="True" SelectedDateFormat="Long" VerticalContentAlignment="Center"
SelectedDateChanged="DatePicker_SelectedDateChanged_3"
SelectedDate="{Binding OwnerRequestsCompletionTime,UpdateSourceTrigger=PropertyChanged}"></DatePicker>
<!--<TextBlock Name="l2" Background="Transparent" Grid.Column="0" Text="{Binding Age}"></TextBlock>-->
</Grid>
</Border>
</UniformGrid>
</DataTemplate>
</DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>
<DataGridTextColumn Width="100" Header="进度指标" Binding="{Binding SchedulePerformedIndex,UpdateSourceTrigger=PropertyChanged}"></DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
小白的我写下来,一是跟大家分享,二也是记录下自己东西,所以有什么大神欢迎指导,接受指导,不接受骂人哦