【发布时间】:2010-11-21 04:20:42
【问题描述】:
我正在尝试设置 StackPanel 的填充,但没有这样的属性。 我试过 StackPanel.Border,但也没有这样的属性。
有什么想法吗?
【问题讨论】:
标签: wpf xaml layout padding stackpanel
我正在尝试设置 StackPanel 的填充,但没有这样的属性。 我试过 StackPanel.Border,但也没有这样的属性。
有什么想法吗?
【问题讨论】:
标签: wpf xaml layout padding stackpanel
您可以在 StackPanel 周围放置一个边框并在其上设置一个填充。我经常这样做,因为有很多 UIElements 没有填充属性。
<Border Padding="10">
<StackPanel>
<!--...-->
</StackPanel>
</Border>
(注意:所有 FrameworkElements 都有一个 Margin 属性,它会间隔元素,但不包括作为 ActualWidth 一部分的边距宽度)。
如果您想在 StackPanel 中分隔项目,您需要像 Rob 所说的那样为每个子项添加边距。
【讨论】:
StackPanel作为ContentTemplate创建一个样式?
或者你可以做一些类似于 TiM 的事情:
<Border>
<StackPanel Margin="10">
...
</StackPanel>
</Border>
【讨论】:
如果您的意思是要分隔 StackPanel 的子元素(没有 Padding 属性),请参阅:How do I space out the child elements of a StackPanel?
【讨论】:
您可能希望改为为面板中的项目添加边距。您将得到相同的结果,只需向后接近即可。
【讨论】:
这是 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>
【讨论】:
x:Key。所以在这里设置两种样式是不必要的。删除第二个(带有BasedOn)并去掉第一个上的x:Key 属性。如果您希望它仅应用于按钮,则将其用作目标类型,否则您可以保持原样。