WPF布局
StackPanel
StackPanel是以堆叠的方式显示其中的控件
Orientation属性 更改堆叠的顺序
<!--默认,由上到下显示各控件。控件在未定义的前提下,宽度为StackPanel的宽度,高度自动适应控件中内容的高度--><StackPanel Orientation="Vertical"> <Button>Button A</Button> <Button>Button B</Button> <Button>Button C</Button> <Button>Button D</Button> <Button>Button E</Button> <Button>Button F</Button></StackPanel><!--由左到右显示各控件。控件在未定义的前提下,高度为StackPanel的高度,宽度自动适应控件中内容的宽度--><StackPanel Orientation="Horizontal"> <Button>Button A</Button> <Button>Button B</Button> <Button>Button C</Button> <Button>Button D</Button> <Button>Button E</Button> <Button>Button F</Button></StackPanel>Margin属性 定义控件的外边缘
<Button Content="Button A"> <Button.Margin> <Thickness Top="10" Bottom="10" Left="20" Right="20" /> </Button.Margin></Button>Width、Height属性,设定控件的宽度和高度,取消自动的宽度和高度
HorizontalAlignment、VerticalAlignment属性,设定控件的水平或竖直对齐方式
MinWidth、MinHeight、MaxWidth、MaxHeight属性,在调整窗体大小,同时更改控件大小时,控件宽度、高度可变化的最大值和最小值
WrapPanel
以流的形式由左到右,由上到下显示控件,其功能类似于Java AWT布局中的FlowLayout
DockPanel
以上、下、左、右、中为基本结构的布局方式,类似于Java AWT布局中的BorderLayout,但与BorderLayout不同的是,每一个区域可以同时放置多个控件,在同一区域放置的多个控件采用的布局方式为StackPanel方式
Grid
Grid是以表格形式组织控件的一种布局方式,与Java AWT中的GridLayout类似,但区别在于WPF中的Grid的每一个单元格中可以放置多个控件,但控件可能会层叠在一起,WPF中的Grid支持单元格的合并,类似于HTML中的table td中的rowspan和colspan, Grid中的行和列可以自定义高度(Height)和宽度(Width)
在设置高度和宽度时可以采用两种写法:
- Height=”60”:不加“星号”表示固定的高度
- Height=”60*”:加“星号”表示“加权”的高度,在调整窗体大小时,此高度或宽度会按窗体大小改变的比例进行缩放
UniformGrid
UniformGrid 控件为控件提供了一种简化的网格布局。当控件添加到 UniformGrid 时,它们会排列在一个网格模式中,该网格模式会自动调整以使控件之间的距离保持均匀。单元格的数目将进行调整,以适应控件的数目。
各单元格的大小完全相同
单元格的数量取决于放入的控件的数量,且单元格一定是行、列数相同的,即11、22、33、44…的单元格分布
Canvas
在WPF中子元素的绝对定位的布局控件
- 其子元素使用Width、Height定义元素的宽度和高度
- 使用Convas.Left(Convas.Right)、Convas.Top(Convas.Bottom)定义与Convas容器的相对位置
- 如果同时存在Convas.Left和Convas.Right、Convas.Top和Convas.Bottom,则Convas.Left、Convas.Top优先生效
InkCanvas
在WPF中实现允许使用墨迹的控件,它提供了一个平面,用户可以在上面书写、绘制和触摸操作,支持手写笔输入和多点触控
≡