中易网

为什么需要Measure和Arrange两步

答案:2  悬赏:40  
解决时间 2021-02-07 08:58
为什么需要Measure和Arrange两步
最佳答案
首先UIElement.Measure的参数是可用的空间(Size对象),这个空间通常代表着父控件留给你显示的可用空间,接着UIElement内部的MeasureCore会被调用,该方法会去决定调用MeasureOverride的大小参数。具体过程是先判断大小属性值是否被显示设置,如果是的话,直接使用设置的值,这就是为什么如果你强行设置一个控件的Width和Height后,它总会保持设置的大小(当然如果超出了父控件的规划大小,WPF会根据IsClipToBounds属性来决定是否裁剪它)。当然如果没有被显示设置,那么MeasureCore会根据可用大小和当前控件的属性(比如Margin)来决定最终传入MeasureOverride的可用大小参数。
接着MeasureOverride被调用,这个可以被子控件改写,返回的只会影响UIElement.DesiredSize属性。

这个DesiredSize是计算后的包括Margin的结果,而且被三个条件所制约(优先级由上到下):

Measure中传入的可用大小参数

显示设置的属性大小
MeasureOverride返回的大小
WPF(Windows Presentation Foundation)是微软推出的基于Windows Vista的用户界面框架,属于.NET Framework 3.0的一部分。它提供了统一的编程模型、语言和框架,真正做到了分离界面设计人员与开发人员的工作;同时它提供了全新的多媒体交互用户图形界面。
全部回答
首先UIElement.Measure的参数是可用的空间(Size对象),这个空间通常代表着父控件留给你显示的可用空间,接着UIElement内部的MeasureCore会被调用,该方法会去决定调用MeasureOverride的大小参数。具体过程是先判断大小属性值是否被显示设置,如果是的话,直接使用设置的值,这就是为什么如果你强行设置一个控件的Width和Height后,它总会保持设置的大小(当然如果超出了父控件的规划大小,WPF会根据IsClipToBounds属性来决定是否裁剪它)。当然如果没有被显示设置,那么MeasureCore会根据可用大小和当前控件的属性(比如Margin)来决定最终传入MeasureOverride的可用大小参数。 接着MeasureOverride被调用,这个可以被子控件改写,返回的只会影响UIElement.DesiredSize属性。 这个DesiredSize是计算后的包括Margin的结果,而且被三个条件所制约(优先级由上到下): Measure中传入的可用大小参数 显示设置的属性大小 MeasureOverride返回的大小
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
电信129元的套餐到期,现在电话不多,主要是上
在阿里巴巴卖东西,能不能赚到钱吗
云盘三村这个地址在什么地方,我要处理点事
松动的瓷砖上能直接铺木地板吗?
脸过敏了,不洗脸会变好?
学校发的银行卡莫名其妙就开通了短信服务是什
洁沁园足疗店在哪里啊,我有事要去这个地方
极品飞车9AE86mod
求好看的重生耽美小说 肉文啊 空间的啊末世的
电脑老是玩着玩着就异常关机然后自动重启是怎
庆华驾校长乐坡报名联络点地址在什么地方,想
饭厅没有预留电视信号的接口。现想在饭厅安一
农村信用社的存折可以异地取款吗?(广州的存
读国外大学的远程教育,获得硕士学位,可以获
振心武道高端教育馆地址在什么地方,想过去办
推荐资讯
我即将要去教一个高二的学英语的学生,鉴于我
女孩子文化课成绩一般,学习绘画有前途吗?
恒强制版怎么用着用着说未注册或注册码错误
落雨天快递员会送货上门
灵宝市苏村乡计划生育服务中心怎么去啊,有知
毕业六一节联欢会的互动游戏有什么?好玩的
饶育民中医外科地址在什么地方,想过去办事
开店指导和经营管理是哪个等级的咖啡师
mcouple有没有中文版
中国银行信用卡审核通过为什么没通知我呢?
php 当满足某个条件后自动执行读取另外一个PH
企业收到的财政直补项目资金怎么做帐务处理?
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?