Han*_*xan 10 silverlight wpf layout user-interface android
我注意到Android,WPF和Silverlight都遵循两遍布局模式.有一个递归的Measure()方法被调用来调整元素的大小,可能是多次.然后调用递归的Layout/Arrange()方法,该方法在其父控件中列出子项的确切位置,并且还将设置控件的最终大小.
我的问题:为什么这会分成两遍,特别是对于某些类型的控件,Measure()无法实际计算控件的实际大小而没有实际布置子项的位置?是否有某种类型的布局少数情况可以通过这种方式实现?
我正在尝试创建自己的UI工具包,我目前正倾向于一次性布局()模式,但我想确信这是否明智.
谢谢你读这个:)
肖恩
Mar*_*art 13
两次传递的原因是结构中的任何元素都可以影响其他元素的剩余可用空间.
一些元素希望占用尽可能大的空间,而另一些元素具有固定的尺寸.您还可以使用仅设置最大宽度的元素.它创造了一个无法一次解决的方程式.
层次结构中的不同面板询问元素在第一遍中需要的大小,然后根据每个面板的性质在它们之间分配空间,最后通知每个元素分配的空间.
编辑:一些更多的解释
单通道布局的主要缺点是您按顺序处理每个元素.第一个元素占用一定的空间,其他元素占用其余部分.为什么这个元素是第一个?尝试使用不同元素顺序的算法,您将得到不同的结果布局.
双向布局模拟并行行为,其中每个元素影响整个布局.
| 归档时间: |
|
| 查看次数: |
1743 次 |
| 最近记录: |