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