web-dev-qa-db-ja.com

StackPanelのパディング?

StackPanelのパディングを設定しようとしていますが、そのようなプロパティはありません。 StackPanel.Borderを試しましたが、そのようなプロパティもありません。

何か案は?

67
Shimmy

StackPanelの周囲にBorderを配置し、その上にパディングを設定できます。パディングプロパティを持たないUIElementが多数あるため、私はこれを何度も行います。

<Border Padding="10">
    <StackPanel>
        <!--...-->
    </StackPanel>
</Border>

(注:すべてのFrameworkElementsにはMarginプロパティがあります。このプロパティは、要素の間隔を空けますが、ActualWidthの一部としてマージン幅を含みません)。

StackPanel内の項目にスペースを配置する場合は、Robが言ったように、各子にマージンを追加します。

107
Tim Swast

または、TiMのような何かをすることができます。

<Border>
    <StackPanel Margin="10">
        ...
    </StackPanel>
</Border>
6
Oliver

stackPanelの子要素(Paddingプロパティを持たない)の間隔を空けたい場合は、 StackPanelの子要素の間隔を空けるにはどうすればよいですか?

6
George Birbilis

代わりに、パネルのアイテムにマージンを追加することをお勧めします。同じ結果が得られますが、逆にアプローチするだけです。

3
Rob

それはあなたが探しているマージンですか?

2
benPearce

これは、StackPanelの要素のパディングのバリアントです

<StackPanel Orientation="Horizontal" Grid.Row="2">
    <StackPanel.Resources>
         <Style x:Key="StackPanelPadding" TargetType="Control">
            <Setter Property="Margin" Value="5,0,0,0"/>
            <Setter Property="Height" Value="40"/>
         </Style>
         <Style BasedOn="{StaticResource StackPanelPadding}" TargetType="Button"/>
    </StackPanel.Resources>
    <Button/>
    <Button/>
</StackPanel>
2
Microshine