在我的窗口中,有一个网格占用了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。
答案 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)
StackPanel将子元素排列成可以定向的单行 水平或垂直。
因此,在您的情况下,StackPanel不是正确的控件。如果您希望将控件固定在特定位置,可以使用DockPanel并将控件放在其中。
<DockPanel>
<Frame DockPanel.Dock="Bottom"/>
</DockPanel>