DataGridColumnHeader样式的问题

时间:2017-08-28 17:50:39

标签: c# wpf xaml

尝试设置我的datagrid列标题样式,遇到两个问题。

我想要什么:我希望我的标题写在带边框的边框和边距上。见图:what I want

我得到了什么:我发现边框是在2个标题之间绘制的,而且我无法摆脱手柄的阴影(白色手柄,灰色阴影),就像你看到的那样在图片what I get

以下是我的标题样式:

<Style TargetType="{x:Type DataGridColumnHeader}">
    <Setter Property="VerticalContentAlignment" Value="Center" />
    <Setter Property="Height" Value="30" />
    <Setter Property="SeparatorBrush" Value="{StaticResource ScbWhite}" />
    <Setter Property="FontWeight" Value="Bold" />
    <Setter Property="Foreground" Value="{StaticResource ScbBlue1}"/>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type DataGridColumnHeader}">
                <Grid Margin="{TemplateBinding Padding}">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="*" />
                        <ColumnDefinition Width="Auto" />
                    </Grid.ColumnDefinitions>
                    <Border x:Name="columnHeaderBorder"
                            TextBlock.FontWeight="Bold"
                            TextBlock.Foreground="{StaticResource ScbBlue1}"
                            BorderThickness="2"
                            BorderBrush="{StaticResource ScbBlue1}"
                            Background="{StaticResource ScbWhite}"
                            Width="{TemplateBinding Width}"
                            Margin="3,3,3,3"
                            Padding="3,0,3,0">
                        <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                                          VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
                                          SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
                    </Border>
                    <!--BorderBrush="{Binding VerticalGridLinesBrush, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type DataGrid}}}"-->
                    <Thumb x:Name="PART_RightHeaderGripper" Grid.Column="1"
                           HorizontalAlignment="Right"
                           Width="6" BorderThickness="0"
                           BorderBrush="{StaticResource ScbWhite}"
                           Background="{StaticResource ScbWhite}"
                           Cursor="SizeWE">
                        <Thumb.BitmapEffect>
                            <DropShadowBitmapEffect Color="Transparent" Opacity="0"/>
                        </Thumb.BitmapEffect>
                    </Thumb>
                </Grid>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

请问,我能做些什么才能得到我想要的东西?

1 个答案:

答案 0 :(得分:0)

DataGrid添加空列标题以填充空间,以用于其他列不覆盖全宽的情况。该标头包含DatePipe个内容。我添加了一个ControlTemplate Trigger,使标题边框透明,没有内容。

要更改Thumb外观,我更改了Thumb.Template并使其成为一个扁平的白色矩形

{ "day": 18, "month": 8, "year": 2017 }

//我替换了模板中的一些StaticResources以使我的项目编译。请恢复它们或仅复制模板的修改部分