stackpanel中的按钮不会随Windows应用商店应用而延伸

时间:2013-01-25 20:09:03

标签: wpf xaml layout windows-store-apps

当我在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应用程序之间的布局系统是否存在差异?

1 个答案:

答案 0 :(得分:2)

这是Button控件的默认样式的差异。

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

但是,在Windows 8应用中,Button的默认样式会将HorizontalAlignment明确设置为Left。我不知道这个默认样式是否在MSDN上的任何地方,但是,使用Blend,我已经验证Button的默认样式包含以下setter:

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

当然,如果您希望Windows 8按钮填充水平空间,您可以随时编写

    <Button HorizontalAlignment="Stretch">Button 1</Button>
    <Button HorizontalAlignment="Stretch">Button 2</Button>