75

我正在尝试设置 StackPanel 的填充,但没有这样的属性。我试过 StackPanel.Border,但也没有这样的属性。

有任何想法吗?

4

5 回答 5

124

您可以在 StackPanel 周围放置一个 Border 并在其上设置一个填充。我最终做了很多,因为有许多 UIElements 没有填充属性。

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

(注意:所有的 FrameworkElements 都有一个 Margin 属性,它将间隔元素,但不包括作为 ActualWidth 一部分的边距宽度)。

如果您想在 StackPanel 中分隔项目,您需要为每个子项添加边距,如 Rob 所说。

于 2009-08-20T03:19:04.100 回答
7

或者你可以做一些类似于 TiM 的事情:

<Border>
    <StackPanel Margin="10">
        ...
    </StackPanel>
</Border>
于 2009-08-20T07:52:35.033 回答
6

如果您的意思是要分隔 StackPanel 的子元素(没有 Padding 属性),请参阅:如何分隔 StackPanel 的子元素?

于 2012-07-11T09:11:10.800 回答
3

您可能希望为面板中的项目添加边距。你会得到相同的结果,只需要向后接近它。

于 2009-08-20T03:04:00.427 回答
3

这是 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>
于 2014-01-31T12:16:06.573 回答