0

我对 Xceed DataGrid 上的列标题的样式感兴趣。目标是使背景颜色为灰色,每个标题列单元格周围都有深灰色边框。在我看来,最好的方法是设置 ColumnManager 的样式:

<Style TargetType="{x:Type xcdg:ColumnManagerCell}">
    <Setter Property="Template" Value="{StaticResource ColumnManagerCellTemplate}"/>
    <Setter Property="BorderBrush" Value="#c5c5c5"/>
    <Setter Property="BorderThickness" Value="1,1,1,1"/>
</Style>  

使用此模板:

    <ControlTemplate x:Key="ColumnManagerCellTemplate" TargetType="xcdg:ColumnManagerCell">
        <Grid Background="LightGray" >
            <xcdg:DataCell Content="{TemplateBinding Content}"
                           HorizontalAlignment="Stretch"
                           VerticalAlignment="Center"
                           Background="LightGray"
                           HorizontalContentAlignment="Left"
                           VerticalContentAlignment="Center"
                           BorderBrush="DarkGray"
                           BorderThickness="2"/>
        </Grid>
    </ControlTemplate>

背景颜色正确显示,内容也正确显示,但我无法在每个单元格周围显示深灰色边框。(或任何颜色边框。)我错过了什么?BorderBrush 和 BorderThickness 属性不应该控制这个吗?它们似乎适用于网格中的其余单元格,但不适用于 ColumnManagerCells。

4

1 回答 1

1

您应该使用边框而不是网格,然后像这样连接边框的模板绑定:

<Style TargetType="{x:Type xcdg:ColumnManagerCell}">
    <Setter Property="Background" Value="LightGray" />
    <Setter Property="BorderBrush" Value="#c5c5c5"/>
    <Setter Property="BorderThickness" Value="1,1,1,1"/>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="ContentControl">
                <Border Background="{TemplateBinding Background}"
                    BorderBrush="{TemplateBinding BorderBrush}"
                    BorderThickness="{TemplateBinding BorderThickness}">
                    <ContentPresenter Content="{TemplateBinding ContentControl.Content}"
                                    ContentStringFormat="{TemplateBinding ContentControl.ContentStringFormat}"
                                    ContentTemplate="{TemplateBinding ContentControl.ContentTemplate}" />
                </Border>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

我应该提一下,我的 ColumnManagerCell 的默认 ControlTemplate 是 ContentPresenter 而不是 DataCell ,如下所示:

<xcdg:DataCell Content="{TemplateBinding Content}" />

您确定使用正确的控制模板吗?

于 2013-11-08T17:10:43.570 回答