MahApps DataGridCell样式

时间:2016-04-07 21:14:59

标签: c# xaml wpfdatagrid

我在我的应用程序中使用MahApps库,datagrid单元格的默认样式没有任何边框:

Data Grid Cells without borders

但我希望DataGrid看起来像这样:

Data Grid Cells wit borders

所以我开始:

<Style TargetType="{x:Type DataGridCell}">
    <Setter Property="Height"
            Value="33" />
    <Setter Property="Background"
            Value="Transparent" />
    <Setter Property="Padding"
            Value="5,0" />
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type DataGridCell}">
                <Border x:Name="border"
                        Background="Transparent"
                        BorderBrush="Black"
                        BorderThickness="1"
                        Padding="0,10,0,10"
                        SnapsToDevicePixels="True">
                    <ContentPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" />
                </Border>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type DataGridCell}">
                <Grid Background="{TemplateBinding Background}">
                    <ContentPresenter VerticalAlignment="Center" />
                </Grid>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

但没有任何变化,所以我认为我缺少基于= {}属性,但我不知道,我已经请求帮助MathApps团队,但没有帮助......

1 个答案:

答案 0 :(得分:4)

GridLinesVisibility="All"控件上设置DataGrid将为您提供内部边框。

enter image description here

请注意,它不会为您提供外部边框,但它比编辑默认模板容易得多。

如果你真的想要获得外部边界,那么你需要覆盖默认模板。

MahApps的默认DataGridCell模板密钥为MetroDataGridCell,因此您需要使用<Style TargetType="{x:Type DataGridCell}" BasedOn="{StaticResource MetroDataGridCell}">