c# - 颜色自定义标题 DataGrid
问题描述
这是我的 XAML 代码,它非常基本:
<DataGrid x:Name="ReportTable" AutoGenerateColumns="False" ItemsSource="{Binding Report}"
CanUserResizeRows="False" SelectionMode="Single" IsReadOnly="True" HorizontalScrollBarVisibility="Disabled" HeadersVisibility="Column">
<DataGridTextColumn ElementStyle="{StaticResource WrapText}" IsReadOnly="true" Header="TEST1" Width="*">
<DataGridTextColumn.HeaderStyle>
<Style TargetType="DataGridColumnHeader">
<Setter Property="HorizontalContentAlignment" Value="Center" />
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<TextBlock TextAlignment="Center" TextWrapping="Wrap" Text="{Binding}"></TextBlock>
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
</DataGridTextColumn.HeaderStyle>
</DataGridTextColumn>
<DataGridTemplateColumn Width="*">
<DataGridTemplateColumn.HeaderStyle>
<Style TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
<Setter Property="VerticalContentAlignment" Value="Stretch"/>
<Setter Property="Background" Value="{DynamicResource GridViewColumnHeaderBackground}"/>
<Setter Property="Margin" Value="4"/>
</Style>
</DataGridTemplateColumn.HeaderStyle>
<DataGridTemplateColumn.HeaderTemplate>
<DataTemplate>
<Border BorderBrush="{DynamicResource GridViewColumnHeaderBorderBackground}">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.5*"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="0.5*"/>
</Grid.ColumnDefinitions>
<TextBlock Background="Transparent" TextWrapping="Wrap" Grid.ColumnSpan="3" Text="TEST2_1" TextAlignment="Center" Margin="5,5,5,5"/>
<Separator Background="{DynamicResource GridViewColumnHeaderBorderBackground}" Grid.ColumnSpan="3" Grid.Row="1" Margin="-4,0,-4,0"/>
<TextBlock Background="Transparent" TextWrapping="Wrap" Grid.Row="2" Grid.Column="0" Text="TEST2_2_1" TextAlignment="Center" Margin="5,5,5,5"/>
<StackPanel Orientation="Horizontal" Grid.Row="2" Grid.Column="1">
<Separator Style="{StaticResource {x:Static ToolBar.SeparatorStyleKey}}" Background="{DynamicResource GridViewColumnHeaderBorderBackground}" Margin="0, -3,0,-3"/>
</StackPanel>
<TextBlock Background="Transparent" TextWrapping="Wrap" Grid.Row="2" Grid.Column="2" Text="TEST2_2_2" TextAlignment="Center" Margin="5,5,5,5" />
</Grid>
</Border>
</DataTemplate>
</DataGridTemplateColumn.HeaderTemplate>
</DataGridTemplateColumn>
</DataGrid>
我唯一无法实现的是合并列标题的背景颜色,如标准列。我认为屏幕截图会更好地显示情况:
第一列背景颜色标题 - 渐变,第二列 - 白色填充。
如您所见,第一列有一个背景颜色,第二列很奇怪,它没有分布在整个标题中。如何达到预期?
解决方案
<DataGridTemplateColumn.HeaderStyle>
<Style TargetType="{x:Type DataGridColumnHeader}">
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
<Setter Property="VerticalContentAlignment" Value="Stretch"/>
<Setter Property="Background" Value="{DynamicResource GridViewColumnHeaderBackground}"/>
<Setter Property="Margin" Value="4"/>
</Style>
</DataGridTemplateColumn.HeaderStyle>
您更改了模板列的背景。它在某种程度上有所不同。删除背景设置器,两个标题将具有相同的颜色
推荐阅读
- python - 将字典列表中的两个列表合并为一个
- caching - 使用 puppeteer,如何减少加载相同页面的时间?
- php - PHP内部数组差异
- android - 出现键盘时滚动布局
- angular - 错误:StaticInjectorError(DynamicTestModule)[RouterLinkWithHref -> Router]:(NullInjectorError:没有路由器提供程序!)
- javascript - 我的 .ts 代码中显示的错误 > [ts] 属性“名称”在类型“任何 []”上不存在
- xamarin - DevOps Xamarin.iOS Build pipeline 也在构建 Droid 项目
- go - 如何部署 travis 自动构建,我的失败了,我不知道如何修复
- highcharts - 离子中的 Highcharts/Highmaps - 地图未显示
- shell - 使用 shell 的 CSV I/O 操作?