在表单上停靠元素

时间:2017-08-26 05:49:07

标签: wpf winforms

我正在尝试命令WPF表单按此顺序停靠

  1. 菜单条
  2. 工具栏
  3. Tab Control
  4. 状态条
  5. 正如您所看到的,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>
    

1 个答案:

答案 0 :(得分:1)

如果将DockPanel的LastChildFill属性设置为True,则最后声明的子元素将获得所有剩余空间。 因此,正确的策略是首先声明您想要固定大小的所有元素(MenuToolBar&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>