首页 文章

坚持StackPanel的底部

提问于
浏览
12

在我的窗口中,有一个网格占用了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 回答

  • 10

    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

    看起来更像 DockPanel 的用例

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

    根据MSDN docs about StackPanel

    StackPanel将子元素排列成一条可以水平或垂直定向的线条 .

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

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

相关问题