如何删除在VerticalAlignment = Center上出现的DatagridTextCell周围的边框?

时间:2019-01-04 10:26:07

标签: wpf xaml datagrid

我想在DataGrid中显示日期值,而文本在行的中心而不是在顶部垂直对齐。如果我更改了VerticalAlignment样式中的DataGridCell属性,则文本将正确对齐,但是会出现一个框架。将BorderThickness设置为0不能解决此问题。

如何摆脱边框/边框,同时在行中间显示文本?

DataGrid样式

<Style x:Key="StandardTabelle" TargetType="{x:Type DataGrid}">
    <Setter Property="Margin" Value="5"/>
    <Setter Property="Background" Value="White"/>
    <Setter Property="AlternatingRowBackground" Value="#ebecec"/>
    <Setter Property="FontSize" Value="12" />
    <Setter Property="RowHeight" Value="24"/>
    <Setter Property="ColumnHeaderStyle" Value="{StaticResource StandardSpaltenKopf}" />
    <Setter Property="CanUserAddRows" Value="False"/>
    <Setter Property="CanUserDeleteRows" Value="False"/>
    <Setter Property="CanUserReorderColumns" Value="False"/>
    <Setter Property="CanUserResizeRows" Value="False"/>
    <Setter Property="CanUserResizeColumns" Value="False"/>
    <Setter Property="IsReadOnly" Value="True" />
    <Setter Property="VerticalContentAlignment" Value="Center"/>
    <Setter Property="RowStyle" Value="{StaticResource AusgewählteZeile}"/>
    <Setter Property="VerticalContentAlignment" Value="Center" />
    <Setter Property="VerticalAlignment" Value="Center"/>
</Style>

所选行的样式

<Style x:Key="AusgewählteZeile" TargetType="{x:Type DataGridRow}">
    <Style.Triggers>
        <Trigger Property="IsSelected" Value="True">
            <Setter Property="Background" Value="{StaticResource Rot}"/>
        </Trigger>
    </Style.Triggers>
</Style>

顶部对齐的日期单元格样式

<Style x:Key="DatumZelle" TargetType="DataGridCell">
    <Setter Property="HorizontalContentAlignment" Value="Right"/>
    <Setter Property="VerticalContentAlignment" Value="Center"/>
    <Setter Property="VerticalAlignment" Value="Center"/>
    <Setter Property="HorizontalAlignment" Value="Stretch"/>
    <Setter Property="BorderThickness" Value="0"/>
    <Style.Triggers>
        <Trigger Property="IsSelected" Value="True">
            <Setter Property="Background" Value="Transparent" />                
        </Trigger>
    </Style.Triggers>
</Style>

enter image description here

1 个答案:

答案 0 :(得分:1)

您可以创建自定义ControlTemplate

<Style x:Key="DatumZelle" TargetType="DataGridCell">
    <Setter Property="HorizontalAlignment" Value="Stretch"/>
    <Setter Property="BorderThickness" Value="0"/>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type DataGridCell}">
                <Grid Background="{TemplateBinding Background}">
                    <ContentPresenter VerticalAlignment="Center" HorizontalAlignment="Right" />
                </Grid>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
    <Style.Triggers>
        <Trigger Property="IsSelected" Value="True">
            <Setter Property="Background" Value="Transparent" />
        </Trigger>
    </Style.Triggers>
</Style>