- WPF布局原则
- 一个窗口中只能包含一个元素
- 不应该显式设置元素尺寸
- 不应该使用坐标设置元素的位置
- 可以嵌套布局容器
- WPF布局容器
- StackPanel:水平或垂直排列元素、Orientation属性分别为:Horizontal / Vertical
- WrapPanel:水平或垂直排列元素、针对剩余空间不足会进行换行或换列进行排列
- DockPanel:根据容器的边界、元素进行Dock.Top、Left、Right、Bottom设置,具备锚定功能
- Grid:类似table表格、可以灵活设置行列并放置控件元素、比较常用
- UniformGrid:指定行和列的数量,均分有限的容器空间
- Canvas:使用固定的坐标设置元素的位置、不具备锚定停靠等功能
布局容器详解
StackPanel
StackPanel
主要用于垂直或水平排列元素,在容器的可用尺寸内放置有限个元素,元素的尺寸总和(长/高)不允许超过StackPanel
的尺寸,否则超出部分不可见。
WrapPanel
WrapPanel
默认排列方向与StackPanel
相反、WrapPanel
的Orientation
默认为Horizontal
。
WrapPanel
具备StackPanel
的功能基础上具备在尺寸变更后自动适应容器的宽高进行换行换列处理。
DockPanel
默认DockPanel
中的元素具备DockPanel.Dock
属性,该属性为枚举:Top、Left、Right、Bottom。
默认情况下,DockPanel
中的元素不添加DockPanel.Dock
属性,则系统会默认添加Left
。
DockPanel
有一个LastChildFill
属性,该属性默认为true
,该属性作用为,当容器中的最后一个元素时,默认该元素填充DockPanel
所有空间。
Grid
Grid具备分隔空间的能力。与web中的table
表格类似。
RowDefinitions
/ ColumnDefinitions
用于给Grid分配行与列。
ColumnSpan
/ RowSpan
则用于设置空间元素的跨列与跨行。
Canvas
该容器就相当于一个”地图”,包含在内的所有控件元素,都通过使用XY来定位,不太常用。