gpt4 book ai didi

WPF StackPanel 垂直框架全高

转载 作者:行者123 更新时间:2023-12-03 03:35:58 26 4
gpt4 key购买 nike

我需要用 stackpanel (框架)中的最后一个元素填充空白空间:

    <DockPanel>
<StackPanel Orientation="Vertical">
<Frame NavigationUIVisibility="Hidden" Height="100" x:Name="_menu" />
<Frame NavigationUIVisibility="Hidden" x:Name="_mainFrame" />
</StackPanel>
</DockPanel>

_mainFrame - 填充从_menu Frame到底部的空白区域

最佳答案

StackPanel 不是允许元素“填充剩余空间”的布局容器。 StackPanel 在其他布局容器中具有特定的用途。它是垂直/水平“堆叠”项目,并根据 child 所需的高度而不是可用的高度来工作。它将允许 children 获得他们想要的空间。

根据您的要求,您需要使用 DockPanel/Grid。这两个控件都允许父容器根据可用内容“限制”其子容器的尺寸。

在您的示例中,您已经有一个 DockPanel。但是,您已将 StackPanel 作为它的子项,并且它是唯一的子项,这没有多大意义。当您有超过 1 个子项要放入布局中时,您需要尝试使用布局容器。在本例中,StackPanel 是 DockPanel 的唯一子级。

要使用 DockPanel 获取您的要求,您可以使用,

<DockPanel>
<Frame NavigationUIVisibility="Hidden" Height="100" x:Name="_menu" DockPanel.Dock="Top" />
<Frame NavigationUIVisibility="Hidden" x:Name="_mainFrame" />
</DockPanel>

DockPanel 默认情况下使用 LastChildFill="True" 因此声明中的第二项将被拉伸(stretch)以填充剩余的可用空间,这正是您所需要的。如果将此属性设置为 false,则不会拉伸(stretch)它。

要使用网格执行相同的操作:

<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Frame NavigationUIVisibility="Hidden" Height="100" x:Name="_menu" />
<Frame NavigationUIVisibility="Hidden" x:Name="_mainFrame" Grid.Row="1" />
</Grid>

根据您的要求,我更愿意使用 DockPanelGrid 方法是值得了解的好方法,并且可以在情况需要时使用.

关于WPF StackPanel 垂直框架全高,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18568567/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com