使中间组件扩展到停靠面板中的剩余空间

时间:2015-09-01 11:44:14

标签: wpf xaml layout panel layout-manager

停靠面板具有为最后一个停靠控件分配所有剩余空间的属性。这会产生以下效果:ping-ping-ping-piiiing,缺乏真实的视觉表现。

我希望达到这样的情况:最顶层和最底层的控制被压缩,剩下的空间被分配给中间控件(或者根本没有,因为窗口的中间应该是空的,视觉上引人注目的控件只放在边缘)。创建的效果将是:ping-ping-piiiing-ping。

想象一下,窗口顶部会有所有标签,盒子等(停靠在面板顶部),底部有一堆按钮的堆叠面板(停靠在面板底部并水平放置)右对齐),类似于消息框。

我怎样才能实现这一目标?也许停靠面板需要与其他一些布局相结合?或许我应该完全使用不同的布局?多年前,在Swing,有这个北/南/东/西集装箱。

1 个答案:

答案 0 :(得分:2)

如果您想让最后一个元素成为“中间”元素并占用剩余空间,您可以设置此布局:

std::shared_ptr

这是什么意思?请注意,最后一个元素(空标签)没有对接。 通常,如果“last child”表示一些可扩展的UI控件(或控件集)(如ListBox),则使用此方法。


<强>替代:

为了您的目标,您还可以设置一个包含三行的表格,并为中间行提供所有剩余高度:

<DockPanel LastChildFill="True">

    <StackPanel Orientation="Horizontal" DockPanel.Dock="Top">
      Labels, boxes
    </StackPanel>

    <StackPanel Orientation="Horizontal" DockPanel.Dock="Bottom">
      Buttons here
    </StackPanel>

    <Label></Label>        

</DockPanel>