一个简单的问题:如何在WPF中的dataGridCell上设置填充?
(一次或所有单元格,我不在乎)

我尝试通过在DataGrid.CellStyle属性上添加一个setter以及以相同的方式使用DataGridCell.Padding属性来使用DataGridColumn.CellStyle属性,但没有任何效果。

我也尝试过使用DataGridColumn.ElementStyle属性,但没有多大运气。

我有点卡在那儿,有没有人设法在dataGridCell上应用填充?

注意:我要补充一点,不,我不能使用透明边框来做到这一点,因为我已经将border属性用于其他用途。我也不能使用margin属性(这似乎起作用,足够令人惊讶),因为我使用background属性,并且我不希望单元格之间有任何“空白”空间。

最佳答案

问题在于Padding不会传输到Border模板中的DataGridCell。您可以编辑模板并为Padding添加TemplateBinding

<DataGrid ...>
    <DataGrid.CellStyle>
        <Style TargetType="DataGridCell">
            <Setter Property="Padding" Value="20"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type DataGridCell}">
                        <Border Padding="{TemplateBinding Padding}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" SnapsToDevicePixels="True">
                            <ContentPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
                        </Border>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </DataGrid.CellStyle>
    <!--...-->
</DataGrid>

08-07 20:26