2009-08-04 43 views
2

对不起,我在搜索谷歌时没有找到有用的东西。非常基本的问题,主要是“我是否愚蠢”。我知道StackPanel为其子元素提供了完整的空间,但为什么“Auto”属性在边框情况下与PARENT元素相关。我的意思是也许我做错了什么,但这种行为是definitly不是我想要的结果:Silverlight边框 - 我是否愚蠢?

Pic1 http://img6.imageshack.us/img6/171/20090805002723.jpg

好了,经过一番思考,我发现一种方式,它看起来像这样:

Seriously http://img18.imageshack.us/img18/3173/20090805003045.jpg

但真的,这样吗?我的意思是一个带有文本框(我想要定义的宽度)和一个边框的“最小尺寸控件”,我需要这种树吗?如果任何人有一个更好的办法,请告诉我...

克里斯

PS:那当我写Silverlight的漂亮的UI组成,并想给一个简单的例子..我只是说: 传奇的!

+0

不,你不傻,基督徒。特别是对于这样一个年轻貌美的家伙! – DOK 2009-08-04 22:41:31

+0

该死的,以为我必须更多地坚持Blend。 “记事本方法”甚至不适用于小例子:-) – 2009-08-04 22:44:08

+0

我认为你可以在该例子中省略StackPanel并获得你想要的。它不会帮助你;) – 2009-08-06 14:31:18

回答

1

绝对不是愚蠢的。这可能非常混乱。我觉得它有助于思考WPF/Silverlight中的布局到从控制层次结构的根目录而不是自下而上的

当您考虑堆栈面板的工作时,就会很明显。它堆叠它的子元素并将它们的宽度设置为它的宽度。因此它覆盖了你的边界宽度Auto。你后来围绕它的Canvas根本不会重新排列它的子项,并且它不会覆盖它们的宽度,所以当它的宽度是堆栈面板的宽度时,边界上的Auto现在正在工作(根据其内容,TextBox)。

清澈如泥?

这里是一个更详细的文章: http://msdn.microsoft.com/en-us/library/ms745058.aspx

我克里斯塞尔斯&伊恩·格里菲思强烈推荐WPF书起床,以加快在WPF/Silverlight的布局的复杂性。

0

一个简单的方法是摆脱了StackPanel中的,只是使用VerticalAlignment和Horizo​​ntalAlignment以保持它在左上角。然后只需设置边框宽度并保持高度不变。

<Grid x:Name="LayoutRoot"> 

    <Border Width="150" BorderBrush="Blue" BorderThickness="1" VerticalAlignment="Top" HorizontalAlignment="Left"> 
     <TextBox Text="I'm Serious" Background="LightBlue" /> 
    </Border> 

</Grid>