Nik*_*laj 6 wpf height frame stackpanel
我需要用stackpanel(Frame)中的最后一个元素填充空格:
<DockPanel>
<StackPanel Orientation="Vertical">
<Frame NavigationUIVisibility="Hidden" Height="100" x:Name="_menu" />
<Frame NavigationUIVisibility="Hidden" x:Name="_mainFrame" />
</StackPanel>
</DockPanel>
Run Code Online (Sandbox Code Playgroud)
_mainFrame - 从_menu框架到底部填充空白区域
StackPanel不是允许元素"填充剩余空间"的布局容器.StackPanel在其他布局容器中有特定用途.它是垂直/水平"堆叠"项目,并根据它的孩子所需的高度而不是可用的高度工作.它将让孩子们获得他们想要的空间.
根据您的要求,您需要使用DockPanel/ Grid.这两个控件都允许父容器根据可用内容"限制"子容器的维度.
在你的例子中,你已经拥有了DockPanel.然而,你已经把它StackPanel作为它的孩子,它是唯一没有多大意义的孩子.如果要将多个子项放入布局,则需要尝试使用布局容器.在这种情况下,StackPanel是唯一的孩子DockPanel.
要通过使用a获得您的要求DockPanel,您可以使用,
<DockPanel>
<Frame NavigationUIVisibility="Hidden" Height="100" x:Name="_menu" DockPanel.Dock="Top" />
<Frame NavigationUIVisibility="Hidden" x:Name="_mainFrame" />
</DockPanel>
Run Code Online (Sandbox Code Playgroud)
DockPanel默认情况下使用LastChildFill="True"声明中的第二个项目将被拉伸以填充可用的剩余空间,这是您所需要的.如果将此属性设置为false,则不会拉伸它.
用以下方法做同样的事情Grid:
<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>
Run Code Online (Sandbox Code Playgroud)
对于你的要求,我宁愿选择DockPanel,这个Grid方法只是一个很好的注意事项,并可能在情况需要时使用.
| 归档时间: |
|
| 查看次数: |
6882 次 |
| 最近记录: |