2009-08-04 48 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>