【问题标题】:Padding on StackPanel?在 StackPanel 上填充?
【发布时间】:2010-11-21 04:20:42
【问题描述】:

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

有什么想法吗?

【问题讨论】:

    标签: wpf xaml layout padding stackpanel


    【解决方案1】:

    您可以在 StackPanel 周围放置一个边框并在其上设置一个填充。我经常这样做,因为有很多 UIElements 没有填充属性。

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

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

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

    【讨论】:

    • 有没有办法用StackPanel作为ContentTemplate创建一个样式?
    • 对不起,我不知道。自从我使用 WPF 以来已经有好几年了。希望有谁知道的好心陌生人出现。
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      如果您的意思是要分隔 StackPanel 的子元素(没有 Padding 属性),请参阅:How do I space out the child elements of a StackPanel?

      【讨论】:

        【解决方案4】:

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

        【讨论】:

        • 你是说在一个地方做比在stackpanel中为十几个元素添加边距更糟糕?
        • 不。他说这是最简单的方法,因为 StackPanel 实际上没有 Padding 属性
        【解决方案5】:

        这是 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 属性。如果您希望它仅应用于按钮,则将其用作目标类型,否则您可以保持原样。
        猜你喜欢
        • 2013-02-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多