【问题标题】:Monospace Margin between elements in WPFWPF中元素之间的等宽边距
【发布时间】:2015-07-31 19:55:35
【问题描述】:

我希望子元素之间的空间,例如 StackPanel 是相同的。当对子元素使用相同的 Margin 时,邻居之间的差距会加倍。我正在使用一个小技巧来解决这个问题,但在我看来,还有更优雅的解决方案。你有吗?

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Style x:Key="MyButtonStyle" TargetType="Button">
    <Setter Property="Margin" Value="4,4,0,4" />
    ...
</Style>
<Style x:Key="LastMyButtonStyle" TargetType="Button" BasedOn="{StaticResource MyButton}">
    <Setter Property="Margin" Value="4" />
</Style>

我对所有按钮都使用 MyButtonStyle,除了最后一个,它使用 LastMyButtonStyle。

【问题讨论】:

    标签: wpf mono styles margin space


    【解决方案1】:

    将 StackPanel 放入另一个容器中,即 Border,并将其 Margin 设置为与 Button 相同的值:

    <Border>
        <StackPanel Orientation="Horizontal" Margin="2">
            <Button Margin="2" Content="Button 1"/>
            <Button Margin="2" Content="Button 2"/>
            <Button Margin="2" Content="Button 3"/>
        </StackPanel>
    </Border>
    

    【讨论】:

    • 当然,这是一个很好的解决方案。但它再次使用 2 种样式。我正在寻找更多的东西。我很感兴趣我们如何以一种风格实现相同的效果。也许我想要太多)))这只是一项研究。感谢您的帮助和时间!
    • 当然可以,但是您将只有一种样式用于 Button,一种用于 StackPanel,这意味着您可以将它们设为默认样式。因此,您不需要将它们显式应用于每个元素。
    • 是的,字体的默认样式看起来不错。现在我将选择这种方法。非常感谢!