我正在尝试命令WPF表单按此顺序停靠
正如您所看到的,StatusBar位于底部,菜单条位于工具栏和选项卡控件的顶部。通常你可以直接使用WinForms填充,但它非常复杂,我不太了解它在WPF中这样做,我想知道是否有人可以帮助我?
我已经将它们全部正确对接,并且水平拉伸,但是由于StatusBar的高度非常高而且tabControl的高度有点低,因此垂直有点乱,我怎么做到如何WinForms做到了吗?
<Window x:Class="Proxy_Scraper.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:Proxy_Scraper"
mc:Ignorable="d"
Title="MainWindow" Height="377.5" Width="811.578">
<Grid>
<DockPanel>
<Menu DockPanel.Dock="Top" HorizontalAlignment="Stretch">
<MenuItem Header="MenuItem" Height="100" Width="100"/>
</Menu>
<ToolBar DockPanel.Dock="Top" HorizontalAlignment="Stretch"/>
<TabControl DockPanel.Dock="Top" HorizontalAlignment="Stretch" VerticalAlignment="Center">
<TabItem Header="TabItem">
<Grid Background="#FFE5E5E5"/>
</TabItem>
<TabItem Header="TabItem">
<Grid Background="#FFE5E5E5"/>
</TabItem>
</TabControl>
<StatusBar DockPanel.Dock="Bottom" HorizontalAlignment="Stretch">
<StatusBarItem>
<TextBlock>fff</TextBlock>
</StatusBarItem>
</StatusBar>
</DockPanel>
</Grid>
</Window>
答案 0 :(得分:1)
如果将DockPanel的LastChildFill
属性设置为True
,则最后声明的子元素将获得所有剩余空间。
因此,正确的策略是首先声明您想要固定大小的所有元素(Menu
,ToolBar
&amp; StatusBar
)和最后一个(我假设{ {1}})将填补剩余的空间:
TabControl
注意:对于复杂的布局,您可以轻松嵌套多个<DockPanel LastChildFill="True">
<Menu DockPanel.Dock="Top" HorizontalAlignment="Stretch">
<MenuItem Header="MenuItem" Height="100" Width="100"/>
</Menu>
<ToolBar DockPanel.Dock="Top" HorizontalAlignment="Stretch"/>
<StatusBar DockPanel.Dock="Bottom" HorizontalAlignment="Stretch">
<StatusBarItem>
<TextBlock>fff</TextBlock>
</StatusBarItem>
</StatusBar>
<TabControl DockPanel.Dock="Top" HorizontalAlignment="Stretch" VerticalAlignment="Center">
<TabItem Header="TabItem">
<Grid Background="#FFE5E5E5"/>
</TabItem>
<TabItem Header="TabItem">
<Grid Background="#FFE5E5E5"/>
</TabItem>
</TabControl>
</DockPanel>
。