WPF 主界面布局中DockPanel的停靠与默认填充

 在WPF中,通常的主界面大都是DockPanel 根元素,一次DockPanel .Top主菜单、DockPanel .Top Toolbar、DockPanel .Bottom Statusbar,中建Fill一个主区域,但在使用时往往有个误区,就是充满剩余空间的元素如何填充,因为DockPanel没有DockPanel.Fill属性。实际做法是先停靠Menu、Toolbar、Statusbar等等可以通过DockPanel .Top、DockPanel .Bottom、DockPanel .Left、DockPanel .Right停靠的子元素,然后,也就是最后,加入填充区元素,同时注意,不能设置此元素的DockPanel属性,这样,最后加入的元素就自动填充整个剩余空间了。


  文档中对这一"技巧"没有任何说明,导致无谓的时间浪费,记录于此,希望对大家有所帮助。


 


<DockPanel Name="dockPanel1">
        <Menu Height="23" Name="menu1" DockPanel.Dock="Top">
            <MenuItem Header="用户管理">
                <MenuItem Header="修改密码"></MenuItem>
                <MenuItem Header="管理用户"></MenuItem>
            </MenuItem>
            <MenuItem Header="铁塔管理">
                <MenuItem Header="增加"></MenuItem>
                <MenuItem Header="修改"></MenuItem>
                <MenuItem Header="删除"></MenuItem>
            </MenuItem>
            <MenuItem Header="通信管理">
                <MenuItem Header="启动/停止巡测"></MenuItem>
                <MenuItem Header="通信测试"></MenuItem>
                <Separator/>
                <MenuItem Header="参数设置"></MenuItem>
            </MenuItem>
            <MenuItem Header="历史查询">
                <MenuItem Header="启动/停止巡测"></MenuItem>
                <MenuItem Header="通信测试"></MenuItem>
                <Separator/>
                <MenuItem Header="参数设置"></MenuItem>
            </MenuItem>
            <MenuItem Header="帮助"/>
        </Menu>
        <ToolBarPanel Height="26" Name="toolBarPanel1" DockPanel.Dock="Top" Orientation="Horizontal">
            <ToolBar>
                <Button>111</Button>
                <Button>222</Button>
            </ToolBar>
            <ToolBar Margin="350,0,0,0">
                <Button>111</Button>
                <Button>222</Button>
            </ToolBar>
        </ToolBarPanel>


        <StatusBar Height="23" Name="statusBar1" DockPanel.Dock="Bottom" VerticalAlignment="Bottom" />


 


   <!--注意Grid,没有设置任何DockPanel.Dock属性:-->


        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto"/>
                <RowDefinition/>
                <RowDefinition Height="240"/>
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="240"/>
                <ColumnDefinition/>
            </Grid.ColumnDefinitions>


            <GridSplitter Grid.RowSpan="2" Grid.Column="1" HorizontalAlignment="Left" Width="5" Name="gridSplitter1" ResizeDirection="Columns"/>


            <WrapPanel>
                <RadioButton Margin="5">全部</RadioButton>
                <RadioButton Margin="5">三管塔</RadioButton>
                <RadioButton Margin="5">角钢塔</RadioButton>
                <RadioButton Margin="5">单管塔</RadioButton>
            </WrapPanel>
            <TreeView Name="treeView1" Grid.Row="1">
                <TreeViewItem Header="连云港市">
                    <TreeViewItem Header="塔1"></TreeViewItem>
                    <TreeViewItem Header="塔2"></TreeViewItem>
                    <TreeViewItem Header="塔3"></TreeViewItem>
                    <TreeViewItem Header="塔4"></TreeViewItem>
                </TreeViewItem>
                <TreeViewItem Header="XXX市"></TreeViewItem>


            </TreeView>


            <WindowsFormsHost Grid.Row="0" Grid.RowSpan="2" Grid.Column="1" Name="windowsFormsHost1" OpacityMask="{x:Null}" Background="#FF190000" />


            <Image Grid.Row="2"></Image>



        </Grid>
    </DockPanel>


 


  如果“Dockstyle.Dock”属性设置为 Top 或 Bottom,请将控件的“Width”属性设置为 Auto。同样,如果“Dockstyle.Dock”属性设置为 Left 或 Right,请将控件的“Height”属性设置为 Auto。


  默认情况下 DockPanel 设置为 LastChildFill,这表示添加到 DockPanel 的最后一个子控件将使其 DockPanel.Dock 属性设置为 Fill。若要更改此行为,请设置 DockPanel 的 LastChildFill 属性。


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WPF窗体是一种容器,用于承载和管理应用程序的各种视图和控件。DockPanel则是一种面板控件,用于布局子控件的位置。 在WPF窗体调用Page,可以使用DockPanel作为窗体的根容器,并将Page作为DockPanel的子控件进行调用。 首先,在窗体的XAML文件,定义一个DockPanel作为根容器,如下所示: ``` <Window> <DockPanel> </DockPanel> </Window> ``` 接下来,在窗体的代码文件,使用Page的实例化对象,并将其添加到DockPanel。假设我们已经创建了一个名为Page1的Page类,在MainWindow.xaml.cs的代码如下所示: ``` Page1 page = new Page1(); // 实例化Page1类对象 dockPanel.Children.Add(page); // 将Page1对象添加到DockPanel ``` 通过这样的操作,就可以在DockPanel调用Page,并在窗体展示Page1的内容。可以在Page类定义需要展示的UI元素,并在窗体调用Page来呈现这些UI元素。 需要注意的是,DockPanel控件是一个按照顺序排列子控件的面板,可以通过设置子控件的DockPanel.Dock属性来确定子控件的位置。默认情况下,子控件将从左到右排列。如果需要改变子控件的位置,可以调整其Dock属性为Top、Bottom、Left或Right,来实现不同的布局效果。 以上就是在WPF窗体使用DockPanel调用Page的简要介绍。使用DockPanel作为容器,能够方便地布局和管理各种子控件和视图,为应用程序的界面设计和视图管理提供了便利。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值