坚持StackPanel的底部

时间:2015-04-17 12:11:19

标签: wpf

在我的窗口中,有一个网格占用了100%的可用垂直空间。在Grid内部是一个StackPanel,里面有另一个StackPanel和一个Frame。我希望将Frame粘贴到父StackPanel的底部。

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

因此,例如,当用户调整窗口大小并且网格获得高度时,框架内部会粘到底部。

我尝试了各种各样的事情,使用VerticalAlign="Stretch"或DockPanel并将帧分配给DockPanel.Dock="Bottom",但没有成功。我要感谢一两个暗示。我不需要StackPanel作为StackPanel,它也可以是DockPanel。

3 个答案:

答案 0 :(得分:20)

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>

您可以在MSDN的Panels Overview页面中找到有关不同WPF Panel的更多信息。

答案 1 :(得分:10)

看起来更像是DockPanel

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

答案 2 :(得分:-1)

根据MSDN docs about StackPanel

  

StackPanel将子元素排列成可以定向的单行   水平或垂直。

因此,在您的情况下,StackPanel不是正确的控件。如果您希望将控件固定在特定位置,可以使用DockPanel并将控件放在其中。

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