如何使在DockPanel中的项目拓展,以适应在WPF中的所有可用空间?
-
13-09-2019 - |
题
我具有包含StackPanel
和一些其他项的StackPanel
。第一StackPanel
具有垂直取向,所述内层一个具有水平取向。内层一个具有TreeView
和ListView
,我想他们扩大并适应窗口,这是我由窗口中设置的宽度,并允许用户改变。我还想外StackPanel
以适合窗口的高度。我该怎么做呢?
修改强>
我已经转换到使用DockPanel
,我已经在每个元件的正确设置DockPanel.Dock
性能,并具有在两个dockpanels的禁用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>
解决方案
此应该这样做 - I设置它,使得TreeView和ListView的共享主视图50/50;如果你不希望出现这种情况,将其设置为“自动”和“*”或什么的。使用 “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 LastChildFill="True">
<Menu Width="Auto" DockPanel.Dock="Top" />
<ToolBar Width="Auto" DockPanel.Dock="Top" />
<StatusBar DockPanel.Dock="Bottom" />
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="0.5*" />
<RowDefinition Height="0.5*" />
</Grid.RowDefinitions>
<TreeView Name="categoryTreeView" Grid.Row="0" />
<ListView Name="clipListView" Grid.Row="1" />
</Grid>
</DockPanel>
</Window>
其他提示
使用一个DockPanel中来代替。 StackPanel中明确不关心可视空间,而DockPanel中做了所有它的大小计算的基础上的可用空间。
<强>更新强>
此外,根据我的经验,把窗口的身体成景,只有具有在窗口中的视图使一个更好的自动调整大小的经验。
由于某种原因把所有的孩子直接进入窗口似乎不是自动尺寸非常好。
<强>更新2:强>
我会删除从要舒展(填充)未使用的空间的元件的明确DockPanel.Dock属性。
设置宽度和高度属性为“自动”
不隶属于 StackOverflow