使中间组件在停靠面板中的其余 space 上加宽
Making middle component widen up over the remaining space in dock panel
停靠面板具有 属性,最后一个停靠的控件被分配给所有剩余的 space。这会产生以下效果:ping-ping-ping-piiiing,缺乏真实的视觉表示。
我想实现这样一种情况,即最顶部和最底部的控件被挤压,剩余的 space 分配给中间控件(或根本 none,因为window 的中间应该是空的,视觉上明显的控件将仅放置在边缘)。创建的效果将是:ping-ping-piiiing-ping.
假设 window 的所有标签、框等都在顶部(停靠在面板的顶部),底部有一堆按钮(停靠在面板的顶部)面板底部并水平右对齐),类似于消息框。
我怎样才能做到这一点?也许停靠面板需要与其他一些布局器结合使用?或者我应该完全使用不同的布局?许多年前,在 Swing 中,有这个 north/south/east/west 容器。
如果你想让最后一个元素成为 "middle" 并占据剩余的 space,你可以设置这样的布局:
<DockPanel LastChildFill="True">
<StackPanel Orientation="Horizontal" DockPanel.Dock="Top">
Labels, boxes
</StackPanel>
<StackPanel Orientation="Horizontal" DockPanel.Dock="Bottom">
Buttons here
</StackPanel>
<Label></Label>
</DockPanel>
这就是你的意思?请注意,最后一个元素(空标签)没有停靠。
如果 "last child" 表示一些可扩展的 UI 控件(或一组控件),例如 ListBox,通常会使用这种方法。
选择:
为了您的目标,您还可以设置一个包含三行的 table,并为中间一行提供所有剩余高度:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Label Grid.Row="0">Top row</Label>
<Label Grid.Row="2">Bottom row</Label>
</Grid>
停靠面板具有 属性,最后一个停靠的控件被分配给所有剩余的 space。这会产生以下效果:ping-ping-ping-piiiing,缺乏真实的视觉表示。
我想实现这样一种情况,即最顶部和最底部的控件被挤压,剩余的 space 分配给中间控件(或根本 none,因为window 的中间应该是空的,视觉上明显的控件将仅放置在边缘)。创建的效果将是:ping-ping-piiiing-ping.
假设 window 的所有标签、框等都在顶部(停靠在面板的顶部),底部有一堆按钮(停靠在面板的顶部)面板底部并水平右对齐),类似于消息框。
我怎样才能做到这一点?也许停靠面板需要与其他一些布局器结合使用?或者我应该完全使用不同的布局?许多年前,在 Swing 中,有这个 north/south/east/west 容器。
如果你想让最后一个元素成为 "middle" 并占据剩余的 space,你可以设置这样的布局:
<DockPanel LastChildFill="True">
<StackPanel Orientation="Horizontal" DockPanel.Dock="Top">
Labels, boxes
</StackPanel>
<StackPanel Orientation="Horizontal" DockPanel.Dock="Bottom">
Buttons here
</StackPanel>
<Label></Label>
</DockPanel>
这就是你的意思?请注意,最后一个元素(空标签)没有停靠。 如果 "last child" 表示一些可扩展的 UI 控件(或一组控件),例如 ListBox,通常会使用这种方法。
选择:
为了您的目标,您还可以设置一个包含三行的 table,并为中间一行提供所有剩余高度:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Label Grid.Row="0">Top row</Label>
<Label Grid.Row="2">Bottom row</Label>
</Grid>