0

当我在 Windows 应用商店项目中尝试使用 2 个按钮的简单堆栈面板时:

<Page ...>
    <StackPanel>
        <Button>Button 1</Button>
        <Button>Button 2</Button>
    </StackPanel>
</Page>

按钮不会拉伸以填充水平空间,而在 WPF 项目中使用相同的代码,它们会拉伸:

<Window ...>
    <StackPanel>
        <Button>Button 1</Button>
        <Button>Button 2</Button>
    </StackPanel>
</Window>

堆栈面板的行为方式有什么不同吗?或者 WPF 和 Metro 应用程序之间的布局系统总体上是否存在差异?

4

1 回答 1

2

这是Button控件默认样式的不同。

在 WPF 中,Button控件的默认样式(请参阅http://msdn.microsoft.com/en-gb/library/ms753328.aspx)不包含用于 的设置器HorizontalAlignment,因此 WPFButton具有默认值Stretch.

但是,在 Windows 8 应用程序中,a 的默认样式Button显式设置HorizontalAlignmentLeft. 我不知道这个默认样式是否在 MSDN 上的任何地方,但是,使用 Blend,我已经验证了Button的默认样式包含以下设置器:

    <Setter Property="HorizontalAlignment" Value="Left"/>

当然,如果你想让 Windows 8 按钮填充水平空间,你可以随时写

    <Button HorizontalAlignment="Stretch">Button 1</Button>
    <Button HorizontalAlignment="Stretch">Button 2</Button>
于 2013-01-25T21:47:23.247 回答