1. ホーム
  2. wpf

[解決済み] [Solved] StackPanelの子要素をスペースアウトさせるには?

2022-04-16 04:24:21

質問

StackPanelがある。

<StackPanel>
  <TextBox Height="30">Apple</TextBox>
  <TextBox Height="80">Banana</TextBox>
  <TextBox Height="120">Cherry</TextBox>
</StackPanel>

子要素の大きさが異なっていても、子要素と子要素の間に同じ大きさの隙間ができるようにするには、どのような方法があるのでしょうか?個々の子要素にプロパティを設定せずにできるのでしょうか?

どのように解決するのですか?

コンテナ内のスコープに適用されるMarginまたはPaddingを使用します。

<StackPanel>
    <StackPanel.Resources>
        <Style TargetType="{x:Type TextBox}">
            <Setter Property="Margin" Value="0,10,0,0"/>
        </Style>
    </StackPanel.Resources> 
    <TextBox Text="Apple"/>
    <TextBox Text="Banana"/>
    <TextBox Text="Cherry"/>
</StackPanel>

EDIT: 2つのコンテナ間でマージンを再利用したい場合、マージン値を外部スコープでリソースに変換することができます(例)。

<Window.Resources>
    <Thickness x:Key="tbMargin">0,10,0,0</Thickness>
</Window.Resources>

そして、内側のスコープでこの値を参照します。

<StackPanel.Resources>
    <Style TargetType="{x:Type TextBox}">
        <Setter Property="Margin" Value="{StaticResource tbMargin}"/>
    </Style>
</StackPanel.Resources>