在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 属性。

转载于:https://www.cnblogs.com/khler/archive/2010/03/23/1692538.html

【原】WPF 主界面布局中DockPanel的停靠与默认填充相关推荐

  1. 在线拍卖系统后台,主界面布局,逻辑

    这里写自定义目录标题 主界面布局 菜单栏&逻辑(未设置样式) 主界面布局 布局依旧采用的是大众款,(标题栏+菜单栏+主界面),因没设置资源字典,这里不多说,直接上代码吧 <Window ...

  2. 基于数据挖掘的旅游推荐APP(二):主界面布局

    主界面布局通过Fragment实现,底部类似于Tab选项卡,效果如下: 底部导航栏是借鉴GitHub上的一个项目,不对,其实就是抄的.附上原地址链接,把库引进来直接用就行了.下面上代码: activi ...

  3. Android项目:手机安全卫士(3)—— 主界面布局

    Android项目:手机安全卫士(3)-- 主界面布局 1 总纲 前面实现了"手机安全卫士"的闪屏界面与版本检测升级问题,接下来的任务就是实现主界面了,这个相对简单,因为没有涉及到 ...

  4. easyui主界面布局easyui-layout用法一例

    easyui主界面布局easyui-layout用法一例 例一: <body id="topBody" style="padding: 0px 0px 0px 0p ...

  5. Android疯狂猜歌游戏之---------主界面布局

    第一小节链接: http://www.imooc.com/wenda/detail/256551

  6. Android 11.0 Settings源码分析 - 主界面加载

    Android 11.0 Settings源码分析 - 主界面加载 本篇主要记录AndroidR Settings源码主界面加载流程,方便后续工作调试其流程. Settings代码路径: packag ...

  7. 【源码分享】WPF漂亮界面框架实现原理分析及源码分享

    1 源码下载 直接放出源码地址,为了编译源码,需要下载安装OSGi.NET插件框架安装包:http://www.iopenworks.com/. [1]框架安装包:MuiTreeNavVsPackag ...

  8. 新增我的推荐歌单、通过ViewPager2+RadioGroup重构主界面( 简易音乐 六)

    新增我的推荐歌单.通过ViewPager2+RadioGroup重构主界面( 简易音乐 六) 关于 效果 添加Api接口 重构主界面 新增推荐歌单功能 新增推荐歌单适配器 关于   在本篇开始之前,我 ...

  9. Android学习系列(22)--App主界面比较

    本文算是一篇漫谈,谈一谈当前几个流行应用的主界面布局,找个经典的布局我们自己也来实现一个. 不是为了追求到底有多难,而是为了明白我们确实需要这么做.  走个题,android的UI差异化市场依然很大, ...

最新文章

  1. mysqlbinlog_flashback工具体验
  2. git安装和使用案例
  3. -bash: jps: command not found
  4. html 文件路径 d files,tmpfiles.d
  5. 第一课 回归问题与应用
  6. JimuReport积木报表,一个好用的开源免费的报表平台!
  7. E4/EAS/Eventing System 事件系统
  8. WM_CREATE消息响应函数和WM_INITDIALOG消息响应函数之区别
  9. 关于PHP中echo换行问题
  10. java游戏下载怎么玩_jar的手机游戏怎么玩?java手机游戏的玩法
  11. Matlab2013a破解问题
  12. 在matlab中开根号,请问,在matlab里面如果输入开方号(根号)?如9的开方怎么写?...
  13. anaconda安装完怎么打开_10分钟带你安装和配置Anaconda
  14. 三维地图开发三维地图服务器
  15. 广东省电子商务认证有限公司
  16. 小数化分数 (思维)
  17. 抖音壁纸小程序,星光壁纸小程序2.0版本,升级版
  18. <video>标签及属性说明
  19. Arduino框架下STM32F1/F4系列HID模式程序烧录教程
  20. 域名和URL是什么?域名和IP是一一对应的吗?

热门文章

  1. 移植JRTPLib到Montavista
  2. Linux SSH命令使用大全
  3. TFTP更新linux或android系统文件
  4. java list%3ca%3e排序_Apache Solr 远程命令+XXE执行漏洞(CVE-2017-12629)
  5. P3952 时间复杂度(模拟)
  6. ODPS主备集群双向数据复制导致主备中心网络打爆问题
  7. 云原生消息、事件、流超融合平台——RocketMQ 5.0 初探
  8. 如何用架构师思维解读区块链技术?
  9. 别再说PHP已死了,它活得好着呢
  10. 初烧盲狙一条铁三角e40