読者です 読者をやめる 読者になる 読者になる

i++

プログラム系のメモ書きなど

WPF/XAML : Grid の各セルに余白を設定する

Grid.Resources に Style を設定して、Grid 内の子要素に Margin か Padding を設定することで余白を取ります。

注意点は、Grid に配置する全ての要素に余白を設定しようと TargetType の Type を FrameworkElement や UIElement にしても上手くいかず、どの要素にも余白が設定されない、というところです(参考:Setting a style's TargetType property to a base class)。

いろいろな要素を Grid 内に含めていて、その全てに余白を設定したい場合、それぞれに同じような Style を設定する必要がありそうです。

<Grid x:Name="MyGrid">
    <Grid.Resources>
        <Style TargetType="{x:Type TextBlock}">
            <Setter Property="Padding" Value="8,8,8,8"></Setter>
        </Style>
    </Grid.Resources>
    <Grid.RowDefinitions>
    ...
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
    ...
    </Grid.ColumnDefinitions>
    <TextBlock Grid.Row="0" Grid.Column="0" VerticalAlignment="Center" Text="SomeText" />
    ...
</Grid>

ここでは割愛しますが、コードの方で、 Grid の子要素を行、列のループで全て取得して、それぞれの Margin か Padding を上書きすることで余白をつける、というのも1つの手です。