如何使 DockPanel 中的项目扩展以适应 WPF 中的所有可用空间?

2024-02-12

我有一个StackPanel含有一个StackPanel和其他一些物品。首先StackPanel具有垂直方向,内部具有水平方向。里面有一个TreeView and a ListView,我希望它们能够扩展并适应窗口的宽度,这是我通过窗口设置的并允许用户更改。我也想要外层StackPanel以适应窗户的高度。我该怎么做呢?

Edit:我已经转换为使用DockPanel,并且我已经设置了DockPanel.Dock每个元素中的属性正确,并且已禁用LastChildFill在两个停靠面板中,布局仍然没有拉伸。

代码:

<Window x:Class="Clippy.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="400" Width="600" MinHeight="400" MinWidth="600" Loaded="Window_Loaded" SizeChanged="Window_SizeChanged">
    <DockPanel Name="wrapperDockPanel" LastChildFill="False">
        <Menu Height="22" Name="mainMenu" Width="Auto" DockPanel.Dock="Top" />
        <ToolBar Height="26" Name="mainToolBar" Width="Auto" DockPanel.Dock="Top" />
        <DockPanel Height="Auto" Name="contentDockPanel" DockPanel.Dock="Top" LastChildFill="False">
            <TreeView Name="categoryTreeView" />
            <ListView Name="clipListView" />
        </DockPanel>
        <StatusBar Height="23" Name="mainStatusBar" DockPanel.Dock="Top" />
    </DockPanel>
</Window>

请改用 DockPanel。 StackPanel 明确不关心可见空间,而 DockPanel 根据可用空间进行所有大小计算。

Update:

此外,根据我的经验,将窗口主体放入视图中,并且仅将视图放在窗口中可以带来更好的自动调整大小体验。

由于某种原因,将所有子项直接放入窗口中似乎不能很好地自动调整大小。

更新2:

我将从要拉伸(填充)未使用空间的元素中删除显式 DockPanel.Dock 属性。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使 DockPanel 中的项目扩展以适应 WPF 中的所有可用空间? 的相关文章