• WPF布局原则
    • 一个窗口中只能包含一个元素
    • 不应该显式设置元素尺寸
    • 不应该使用坐标设置元素的位置
    • 可以嵌套布局容器
  • WPF布局容器
    • StackPanel:水平或垂直排列元素、Orientation属性分别为:Horizontal / Vertical
    • WrapPanel:水平或垂直排列元素、针对剩余空间不足会进行换行或换列进行排列
    • DockPanel:根据容器的边界、元素进行Dock.Top、Left、Right、Bottom设置,具备锚定功能
    • Grid:类似table表格、可以灵活设置行列并放置控件元素、比较常用
    • UniformGrid:指定行和列的数量,均分有限的容器空间
    • Canvas:使用固定的坐标设置元素的位置、不具备锚定停靠等功能

布局容器详解

StackPanel

StackPanel主要用于垂直或水平排列元素,在容器的可用尺寸内放置有限个元素,元素的尺寸总和(长/高)不允许超过StackPanel的尺寸,否则超出部分不可见。

WPF布局 - 图1

WrapPanel

WrapPanel默认排列方向与StackPanel相反、WrapPanelOrientation 默认为Horizontal

WrapPanel具备StackPanel的功能基础上具备在尺寸变更后自动适应容器的宽高进行换行换列处理。

WPF布局 - 图2

DockPanel

默认DockPanel中的元素具备DockPanel.Dock属性,该属性为枚举:Top、Left、Right、Bottom。

默认情况下,DockPanel中的元素不添加DockPanel.Dock属性,则系统会默认添加Left

DockPanel有一个LastChildFill属性,该属性默认为true,该属性作用为,当容器中的最后一个元素时,默认该元素填充DockPanel所有空间。

WPF布局 - 图3

Grid

Grid具备分隔空间的能力。与web中的table表格类似。

RowDefinitions/ ColumnDefinitions用于给Grid分配行与列。

ColumnSpan/ RowSpan则用于设置空间元素的跨列与跨行。

WPF布局 - 图4

WPF布局 - 图5

Canvas

该容器就相当于一个”地图”,包含在内的所有控件元素,都通过使用XY来定位,不太常用。