WPF Layout 系统概述 MeasureOverride和ArrangeOverride
说的非常的好:多参考!!!
https://blog.csdn.net/nncrystal/article/details/47416339
https://www.cnblogs.com/dingli/archive/2011/04/22/2024786.html#top
public class CustomControl1 : Panel { /// <summary> /// 先测量需要多大尺寸,做个申报准备 /// </summary> /// <param name="constraint">限定的尺寸,比如,规定了width和height</param> /// <returns></returns> protected override Size MeasureOverride(Size constraint) { //定义预期的宽度和高度 double height = 0, width = 0; UIElement element; //遍历每个元素,计算所需的总尺寸 for (int i = 0; i < Children.Count; i++) { element = Children[i]; //按照限定的尺寸测量一下自己,拿镜子找着自己 element.Measure(constraint); if (height < element.DesiredSize.Height) height = element.DesiredSize.Height; width += element.DesiredSize.Width; } //申报,我需要这个尺寸 return new Size(width, height); } /// <summary> /// 排列每个元素 /// </summary> /// <param name="arrangeBounds">测量的尺寸</param> /// <returns></returns> protected override Size ArrangeOverride(Size arrangeBounds) { double currentX = 100; UIElement element; for (int i = 0; i < Children.Count; i++) { element = Children[i]; //排列每个元素 Children[i].Arrange(new Rect(currentX, 0, element.DesiredSize.Width, element.DesiredSize.Height)); currentX += element.DesiredSize.Width; } return arrangeBounds; } }
<local:CustomControl1 Width="300" Background="Gray" HorizontalAlignment="Right" Margin="0,20,151,280"> <Rectangle Width="100" Height="50" Fill="Red" Margin="10,10,0,0" /> <Rectangle Width="100" Height="50" Fill="Yellow" Margin="10,10,0,0" /> <Rectangle Width="100" Height="50" Fill="Green" Margin="10,10,0,0" /> </local:CustomControl1>
上面代码原文地址:http://www.cnblogs.com/xiaokang088/archive/2011/01/08/1930952.html
WPF Layout 系统概述 MeasureOverride和ArrangeOverride的更多相关文章
- WPF Layout 系统概述——Measure
原文:WPF Layout 系统概述--Measure 前言 在WPF/Silverlight当中,如果已经存在的Element无法满足你特殊的需求,你可能想自定义Element,那么就有可能会面临重 ...
- WPF Layout 系统概述——Arrange
原文:WPF Layout 系统概述--Arrange Arrange过程概述 普通基类属性对Arrange过程的影响 我们知道Measure过程是在确定DesiredSize的大小,以便Arrang ...
- WPF/Silverlight Layout 系统概述——Arrange(转)
Arrange过程概述 普通基类属性对Arrange过程的影响 我们知道Measure过程是在确定DesiredSize的大小,以便Arrange过程参考这个DesiredSize,确定给MyPane ...
- WPF/Silverlight Layout 系统概述——Measure(转)
前言 在WPF/Silverlight当中,如果已经存在的Element无法满足你特殊的需求,你可能想自定义Element,那么就有可能会面临重写MeasureOverride和ArrangeOver ...
- 对WPF中MeasureOverride 和ArrangeOverride 浅理解
以前对MeasureOverride 和ArrangeOverride十分费解,看到了这篇博文茅塞顿开~ public class CustomControl1 : Panel { /// <s ...
- WPF MeasureOverride和 ArrangeOverride做个 页面导航
public class NavigationPanel:Panel { protected override Size MeasureOverride(Size availableSize) { S ...
- Understanding the WPF Layout System
Many people don't understand how the WPF layout system works, or how that knowledge can help them in ...
- MeasureOverride 和 ArrangeOverride
原文:MeasureOverride 和 ArrangeOverride FrameworkElement.MeasureOverride方法实现当在派生类中重写时,测量子元素在布局中所需的大小,然后 ...
- MeasureOverride和ArrangeOverride 练手项目
public class Diagnol:Panel { /// <summary> /// 测量 /// </summary> /// <param name=&quo ...
随机推荐
- redis在游戏服务器中的使用初探(三) 信息存储
摘要: 搭建了服务器环境 有了客户端 我们来假想下以下应用场景:我们简单举个实例来描述下Hash的应用场景,比如我们要存储一个用户信息对象数据,包含以下信息:用户ID,为查找的key,存储的value ...
- linux-ubuntu 下R无法安装rjava模块的原因及解决方案
错误信息: 没有 /usr/lib/jvm/default-java/jre/bin/java 原因: R找不到java作为依赖 解决方案: (1) 如果你没有安装java,请先安装java. (2) ...
- 找不到类SimpleJdbcTemplate ParameterizedRowMapper cannot be resolved
找不到类SimpleJdbcTemplate 背景 想编译个web应用,原来spring-jdbc.jar用的是Spring 3.1,今天改成用Spring 4.3,报了这个错误. 现象 编译不通过, ...
- MMS从Contacts中添加收件人显示email账号
android系统默认代码,MMS中可以添加email地址作为收件人,但是从Contacts中选择收件人时却不显示email. 解决思路:为了降低修改量,在原来只搜索phoneNum的基础上,再做一次 ...
- 2017/2/10springMVC中文乱码问题
springMVC中文乱码问题 一:从jsp传到后台控制出现的乱码有以下两个方面: 1.当提交方式为get的时候(因为字符拦截器无法拦截get): 修改方法为: 再改工程里的tomcat的配置文件se ...
- 非接触IC卡中typeA卡和typeB卡的区别--总结,二者的调制方式和编码方式不同
非接触IC卡中typeA卡和typeB卡的区别--总结,二者的调制方式和编码方式不同 1.非接触式IC卡的国际规范ISO/IEC14443的由来? 在非接触式IC卡的发展过程中,这些问题逐渐被解决并形 ...
- 58.UIScrollView XIB拖拽约束
第一步: 拖拽UIScrollView 到控制器上 ,给scrollView 添加约束 ,这时是正常的 第二步:scrollview上添加UIview ,(注意:这个 ScrollView就是根据这个 ...
- fastq-to-fasta转换及fasta拆分、合并
格式转换: use awk :awk 'BEGIN{P=1}{if(P==1||P==2){gsub(/^[@]/,">");print}; if(P==4)P=0; P++ ...
- ThinkPHP 二维码生成
请求获取并展示二维码 <img src="<?php echo U('createCode?zsnumber='.$time.$kcname['id'].$stuInfo['id ...
- timerfd与eventfd
1.timerfd timerfd是定时器描述符,通过timerfd_create()来创建它,timerfd_settime()来设置定时器时间,当时间到期定时器文件描述符就可读,所以能够在sele ...