2015-04-17 144 views
8

在我的窗口中,有一個網格佔據了可用垂直空間的100%。在Grid裏面是一個StackPanel,裏面有另外一個StackPanel和一個Frame。我希望該框架堅持到父級StackPanel的底部。粘貼到StackPanel的底部

<StackPanel> 
    <StackPanel> 
     //normal content 
    </StackPanel> 
    <Frame /> // should stick to the bottom 
</StackPanel> 

因此,例如,當用戶調整窗口大小和網格增益高,內粘在底部的框架。

我曾嘗試過各種東西,用VerticalAlign="Stretch"或DockPanel中並分配構圖DockPanel.Dock="Bottom",但沒有成功。我會感謝一兩個暗示。我不需要StackPanel是一個StackPanel,它也可以是一個DockPanel。

+0

請發佈您的網格代碼,讓我們知道網格中其他行應該在什麼高度... –

回答

15

A StackPanel不是正確的Panel用於您的要求,因爲他們不提供相同的佈局和調整大小功能作爲Grid。因此,只需將其替換爲Grid,即可將大部分空間分配給內部StackPanel,然後Frame將堅持到底部。

<Grid> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="*" /> 
     <RowDefinition Height="Auto" /> 
    </Grid.RowDefinitions> 
    <StackPanel> 
     //normal content 
    </StackPanel> 
    <Frame Grid.Row="1" /> 
</Grid> 

你可以找到更多關於在Panels Overview頁MSDN上的不同WPF Panel秒。

+0

非常感謝! – peter

+0

@peter:如果可能,請將此答案標記爲解決方案:) – Ben

8

看起來更像是一個用例DockPanel

<DockPanel> 
    <StackPanel> 
     <!--//normal content--> 
    </StackPanel> 
    <Frame DockPanel.Dock="Bottom"/> <!--// should stick to the bottom--> 
</DockPanel> 
+1

在此情況下,「DockPanel」不適用於「Panel」,因爲它們是重量級控件,它們提供的功能在此處不是必需的。一個簡單的'Grid'將會更有效率。 – Sheridan

+3

很難說如果DockPanel不合適,不知道用例。我會讓@Peter決定。 –

0

根據MSDN docs about StackPanel

一個StackPanel安排子元素成可以水平或垂直地定向 單行。

所以在你的情況下,StackPanel不是正確的控制使用。如果您希望將控件固定在特定位置,則可以使用DockPanel並將其放置在其中。

<DockPanel> 
     <Frame DockPanel.Dock="Bottom"/> 
</DockPanel>