2013-07-25 50 views
1

我正在嘗試實現特定的佈局。控制Stackpanel中的子元素的寬度

我有兩個元素,我想要垂直堆疊(我需要他們密切關注對方)。我目前正在嘗試使用Stackpanel來實現它。

問題是我希望第一個元素的寬度有限,另一個使用StackPanel中的所有可用寬度。理想情況下,我希望第一個元素的寬度等於包含StackPanel的網格的四列寬度,這裏是我的代碼。

<Grid> 
<!-- Colums and Rows definition go here --> 
<StackPanel Grid.Column="0" Grid.ColumnSpan="4" Grid.Row="3" Grid.RowSpan="8"> 
    //The first element 
    <Viewbox Name="viewbox_choix" Margin="160,0,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Grid.Column="0" Grid.ColumnSpan="4" Grid.Row="3" Grid.RowSpan="4"> 
    //The second element 
    <StackPanel Grid.Column="0" Grid.ColumnSpan="5"> 
     <Border></Border> 
     etc... 
    </StackPanel> 
</StackPanel> 
</Grid> 

網格屬性指的是堆棧面板的父網格。但是當我嘗試在StackPanel中使用它們時,Grid.Column和Grid.ColumnSpans似乎沒有任何效果。

代碼的問題是,第一要素還使用StackPanel中的所有的寬度,但是這不是我想要的東西......

任何人可以幫助我嗎?我確切地說,我仍然在學習WPF,我真的不知道綁定是如何工作的...

回答

1

在WPF中,StackPanel不能像Grid那樣工作。沒有最大寬度......它會高興地讓內容從右側消失。如果你想自動調整大小,只需用`電網

UPDATE >>>

Grid類取代StackPanel S,有一個名爲IsSharedSizeScope附加屬性。將其添加到父項Grid並將其設置爲true。然後在RowDefinitions中,可以將SharedSizeGroup屬性添加到所需的列中。

這些例子可以幫助你:

Grid's SharedSizeGroup and * sizing(SO後)

Grid.IsSharedSizeScope Attached Property(MSDN)

您可能需要做一些試驗,但你應該能夠使用來獲得預期的效果這些屬性。

+0

非常感謝,我會試試這個,我會告訴你。 – reddy

+0

嗯,實際上我還有一個問題,我怎麼能設置一行的最大寬度等於父網格的4列的寬度?我的問題是,我怎樣才能引用父網格? – reddy

+0

謝謝,我會試試! – reddy

相關問題