MSDN解释:

获取或设置一个值,该值指示 System.Windows.Controls.DockPanel 中的最后一个子元素是否拉伸以填充剩余的可用空间。

返回:

如果最后一个子元素拉伸以填充剩余的空间,则为 true;否则为 false。 默认值为 true。

MSDN已经说的很清楚了,这个属性是用来是否最后一个元素是拉伸以填满整个剩余空间。而且默认值为true

所以如果在一个刚new出来的dockpanel中加入一个textbox,那么这个textbox是会撑满整个dockpanel的

此时我们若想让其靠右,设置textbox.dock=dock.Right.  你会发现是没有用的,因为LastChildFill属性默认为true,所以textbox还是会撑满整个dockpanel。灰色的是textbox.如下图:

代码:

<Window x:Class="WpfApp9.MainWindow" Title="MainWindow" Height="350" Width="525">
<DockPanel LastChildFill="True" >
<TextBox Background="Gray" DockPanel.Dock="Right"/>
</DockPanel>
</Window>

效果:

要想达到靠右的效果的话,只要将LastChildFill设置成false即可。

或者不用修改 LastChildFill属性,在dockpanel中再加入一个元素,由于LastChildFill=true的缘故,这个新元素会自动充满,然后textbox也顺势被挤到了右侧。如下图,可以看到灰色的靠右停靠了

代码:

<Window x:Class="WpfApp9.MainWindow" Title="MainWindow" Height="350" Width="525">
<DockPanel LastChildFill="True">
<TextBox Background="Gray" DockPanel.Dock="Right"/>
<TextBox Background="Blue"/>
</DockPanel>
</Window>

效果:

值得一提的是,无论此时怎么设置这个蓝色的textbox的dock属性,都不会改变现有的效果。即使是给蓝色的textbox设置固定的长宽也没用,蓝色textbox依旧会停靠在剩余空间的中间位置,只不过因为长宽不会撑满而已

看到这里,我们应该了解了dockpanel的lastchildfill属性给了DockPanel两种截然不同的形态,若是默认情况下,既为true的时候,dockpanel往往呈现下图这个样子:

这也是设计者希望dockpanel应该变成的样子,既有上下左右停靠的一种布局方式,如常见软件会使用的菜单栏,状态栏,主要内容。非常适合dockpanel来发挥。

但有时候我们会希望某个小dockpanel中只有一个控件,让该控件靠左,此时就最好将lastchildfill属性设置成false。结合元素的margin属性可以达到各种效果,margin是可以设置成负数的,效果是会跑到dockpanel之外,但元素依然存在于逻辑树上。

如果设置了lastchildfill为false,又没有对textbox的dock属性作设置,那么textbox会默认靠左。

这个规则是按照左上右下的顺序来的,和margin还有pading属性是类似的。

对两个元素同时设置dock属性,其停靠位置是会根据先加入dockpanel的顺序来决定,如下图:

可以看到,灰色的在上面,蓝色的在下面。

详解WPF DockPanel的LastChildFill属性的更多相关文章

  1. Git使用总结 Asp.net生命周期与Http协议 托管代码与非托管代码的区别 通过IEnumerable接口遍历数据 依赖注入与控制反转 C#多线程——优先级 AutoFac容器初步 C#特性详解 C#特性详解 WPF 可触摸移动的ScrollViewer控件 .NET(C#)能开发出什么样的APP?盘点那些通过Smobiler开发的移动应用

    一,原理 首先,我们要明白Git是什么,它是一个管理工具或软件,用来管理什么的呢?当然是在软件开发过程中管理软件或者文件的不同版本的工具,一些作家也可以用这个管理自己创作的文本文件,由Linus开发的 ...

  2. AngularJS语法基础及数据绑定——详解各种数据绑定指令、属性应用

    AngularJS简单易学,但是功能强大.特别是在构建单页面应用方面效果显著.而 数据绑定 可以说是他被广泛使用的最主要的优点.他舍弃了对DOM的操作方式,一切都由AngularJS来自动更新视图,我 ...

  3. input表单的type属性详解,不同type不同属性之间区别

    目标:详解表单input标签type属性常用的属性值 一.input标签和它的type属性 PS:input 元素可以用来生成一个供用户输入数据的简单文本框. 在默认的情况下, 什么样的数据均可以输入 ...

  4. spring sessionFactory 属性配置详解,applicationContext中各种属性详解

    1.Bean的id为sessionFactory,对应的类为AnnotationSessionFactory,即采用注解的形式实现hibernate. 2.hibernateProperties,配置 ...

  5. 高效开发之SASS篇 灵异留白事件——图片下方无故留白 你会用::before、::after吗 link 与 @import之对比 学习前端前必知的——HTTP协议详解 深入了解——CSS3新增属性 菜鸟进阶——grunt $(#form :input)与$(#form input)的区别

    高效开发之SASS篇   作为通往前端大神之路的普通的一只学鸟,最近接触了一样稍微高逼格一点的神器,特与大家分享~ 他是谁? 作为前端开发人员,你肯定对css很熟悉,但是你知道css可以自定义吗?大家 ...

  6. 详解WPF Blend工具中的复合路径功能 ( 含路径标记语法 )

    写此文章的目的是为了简单分析一下 Blend工具中提供的"复合路径"功能.有人在我的博文中留言问我复合路径的问题.  稍微琢磨一下,觉得应该是对的.因此贴出来和大家分享.有不对的说 ...

  7. 深入详解WPF ControlTemplate

    WPF包含数据模板和控件模板,其中控件模板又包括ControlTemplate和ItemsPanelTemplate,这里讨论一下WPF ControlTemplate. 其实WPF的每一个控件都有一 ...

  8. 举例详解CSS中的cursor属性

    这篇文章主要举例介绍了CSS中的cursor属性,包括zoom-in/zoom-out和grab/grabbing等常用属性值的使用,需要的朋友可以参考下 一.开篇之言 CSS3的领域范围已经渗透到了 ...

  9. 详解css中的position属性

    这一次直接进入主题. css中最常用的布局类属性,一个是float,另一个就是定位属性position. 对于position来讲,有以下属性值: static : 无特殊定位,对象处于正常文档流.其 ...

随机推荐

  1. 如何在 Apache Flink 中使用 Python API?

    本文根据 Apache Flink 系列直播课程整理而成,由 Apache Flink PMC,阿里巴巴高级技术专家 孙金城 分享.重点为大家介绍 Flink Python API 的现状及未来规划, ...

  2. 0908NOIP模拟测试赛后总结

    %%%skyh rank1- 奶风神.kx.有钱人 rank2-210 NC锅.RNB.B哥 rank5-200 我 rank32- 9-13upd:无意中点进了某个博客发现我竟然考场上yy出了树上莫 ...

  3. Python-函数基础(2)

    目录 可变长参数 形参 实参 函数对象 函数嵌套 名称空间与作用域 名称空间 内置名称空间 局部名称空间 全局名称空间 执行顺序 搜索顺序 作用域 全局作用域 局部作用域 global nonloca ...

  4. COGS 2479. [HZOI 2016] 偏序 (CDQ套CDQ)

    传送门 解题思路 四维偏序问题,模仿三维偏序,第一维排序,第二维CDQ,最后剩下二元组,发现没办法处理,就继续嵌套CDQ分治.首先把二元组的左右两边分别打上不同的标记,因为统计答案时只统计左边对右边的 ...

  5. 使用 SourceTree 操作时弹出 password required

    通过 https 的方式克隆仓库的,SourceTree 推送等操作的时候会弹出提示要求输入密码. 在仓库里面设置: 远程仓库-选中仓库-点击编辑-修改 url 路径, 路径格式,以码云为例: htt ...

  6. linux mysql备份shell

    #!/bin/bash # Shell script to backup MySql database # Author: Henry he # Last updated: -- # crontab ...

  7. iOS之String动态书写

    /** String动画书写出来 @param string 要写的字 @param view 父视图 @param ui_font 字体大小 @param color 字体颜色 */ - (void ...

  8. 转:Linux 文件IO理解

    源地址http://blog.csdn.net/lonelyrains/article/details/6604851 linux文件IO操作有两套大类的操作方式:不带缓存的文件IO操作,带缓存的文件 ...

  9. 老师的blog整理 .网络编程部分 .网络编程部分 前端部分 django基础部分

    老师的blog整理 .网络编程部分 .网络编程部分 前端部分 django基础部分   老师的blog整理 python基础部分: 宝哥blog: https://www.cnblogs.com/gu ...

  10. 用JS把数组内的日期转换为星期

    核心代码 给定日期是星期几,应把字符串转为Date: new.Date('2017-12-30').getDay(); // 返回0,表示星期天,1:星期一…… 案例: 需求: 调用此方法 funct ...