如果WPF没有WinForm所具有的优点,那么他也不可能活到现在,更不用说还有可能崛起了。所以笔者想开一个系列来谈谈这俩年的WPF之旅。希望能给那些正在学习WPF或是将要学习的同学们带来一些帮助。出于笔者本身的学习方式有一点不正统的原因,所以这一系列的文章只能被定义为杂谈。 布局是WPF界面开发中一个很重要的环节。所谓布局,即确定所有控件的大小和位置,是一种递归进行的父元素(Panel)和子元素交互的过程,为了同时满足父元素和子元素的需要,WPF采用了一种包含测量(Measure)和排列(Arrange)两个步骤的解决方案。子元素最终所占用的空间和位置是由父元素确定的(RenderSize),但是父元素会先参考子元素的意见(DesiredSize)。下面来看看子元素怎样给出意见(控制尺寸、控制位置、变换)以及父元素怎样做决定
由于WPF界面元素有很多与布局有关的属性,如坐标,大小,对齐方式,相对位置,间距等。首先这些属性使用的是与设备无关的分辨率单元,这导致同样大小的元素在不同界面上显示的效果可能不同;其次每个属性值有一定的优先级,例如Button的Height和Width属性优先于Stretch属性,如果设置 Height, Width 以及 Stretch,会导致 Stretch被忽略。
|