布局
为什么布局很重要
控件的布局对于应用程序的可用性来说是非常重要的。基于像素坐标排列控件只能工作在有限的环境里,但是当你一使用它在不同的屏幕或者不同字体大小的时候,它就无法很好的工作。WPF提供了丰富的内置布局面板集合以帮助你。
WPF中有五个最流行的布局面板:
- 网格布局
- 堆栈布局
- 停靠布局
- 流式布局
- 画板布局
最佳实践
- 避免固定位置
使用对齐属性并结合内间距设置元素在面板中的位置。 - 避免固定大小
尽可能设置元素的宽度和高度为Auto - 不要滥用画板布局来布局元素。仅使用它在向量图形中。
- 使用堆栈布局来布局你的多个对话框的按钮
- 使用网格布局来布局实体表单的静态数据
为标签创建一个自动大小(按内容)的列,为文本框创建一个星型大小(按比例)的列。 - 使用网格面板的ItemControl在数据模板中布局你的动态键值列表。使用SharedSize特性同步标签的宽度。(?)
垂直和水平对齐
使用VerticalAlignment和HorizontalAlignment属性来停靠控件到面板的一个或者多个边。
VerticalAlignment有Top、Center、Bottom、Strech
HorizontalAlignment有Left、Center、Right、Strech
Strech为拉伸子元素以填充父元素的已分配空间
边距和填充
边距和填充属性可以被用于在空间的周围预留某些空间
- 边距是控件周围额外的空间
- 填充是控件内部额外的空间
- 外部控件的填充是内部控件的边距
高度和宽度
尽管这不是推荐的方式,但所有控件都提供了高度和宽度属性给元素一个固定大小。一个最好的方式是使用最小高度、最高高度、最小宽度和最大宽度属性来定义可接受的范围。
如果你设置宽度或者高度为自动,控件将会根据内部的大小控制自身大小。
溢出处理 裁剪
布局控件通常裁剪它们超出面板边界的子元素的大小。这个行为可以被ClipToDounds属性控制。
滚动
当控件太大以至于不能适应可用大小,你可以使用ScrollViewer包裹它。滚动条控件拥有垂直和水平两个滚动条来选择可见区域。
滚动条的可见由垂直和水平的ScrollbarVisibility属性控制
<ScrollViewer>
<StackPanel>
<Button Content="First Item"/>
<Button Content="Second Item"/>
<Button Content="Third Item"/>
</StackPanel>
</ScrollViewer>

浙公网安备 33010602011771号