首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么ArrangeOverride要重新计算最终大小

为什么ArrangeOverride要重新计算最终大小
EN

Stack Overflow用户
提问于 2014-05-04 09:04:06
回答 2查看 613关注 0票数 1

对于我自己来说,如果MeasureOverride计算FrameworkElement的大小,而ArrangeOverride 只是定位子元素,这将是逻辑的。但是ArrangeOverride不只是排列子元素。它还计算了一次FrameworkElement的大小,我不明白。为什么MeasureOverride不能计算最终的大小,就这样?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-04 09:16:10

因为您的元素可能不是屏幕上唯一的元素。

布局没那么简单。WPF必须计算出它必须使用的实际物理空间,然后计算每个元素需要多少空间,如果可以的话缩放所请求的数量,然后应用它。此外,一些元素可能希望根据所分配的空间的确切数量进行更改。

This previous answer of mine给你打了个比方。

票数 1
EN

Stack Overflow用户

发布于 2017-03-19 05:20:41

如果您使用自己的布局算法并在ArrangeOverride()调用中实现自己的面板

代码语言:javascript
复制
child.Arrange(rect1)

如果rect1与子DesiredSize不同,那么系统可能会任意决定忽略rect1大小,并使用不同的东西。我见过DesiredSize被使用过,我不确定是否总是这样。我想说,这是一种类似于bug的东西:)

如果rect1是在面板的MeasureOverride()传递中计算的,那么这种行为的解决方法是第二次对子节点调用MeasureOverride(),传递rect1大小,因此在传递rect1()之前重新计算子级的DesiredSize。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23454425

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档