得鹿梦鱼 得鹿梦鱼

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)

在设置高度和宽度时可以采用两种写法:

  1. Height=”60”:不加“星号”表示固定的高度
  2. 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中实现允许使用墨迹的控件,它提供了一个平面,用户可以在上面书写、绘制和触摸操作,支持手写笔输入和多点触控