XAML布局

XAML布局主要分为六大类:网格(Grid)、泊靠式(DockPance)、栈式面板(StankPance)、自动折叠(WrapPanel)、均分(UmiformGrid)、画布(Canvas)。

首先Grid布局,它的子控件放在一个一个定义好的小格子里,就像一个网格,其与其他几个布局相比功能最多也最为复杂,而放在Grid中的控件元素都必须显示采用附加属性语法定义其所在的行和列。它的特点有:

  1. 可以定义任意数量的行和列非常灵活。
  2. 行的高度和列的宽度可以使用绝对值、相对比例或自动调整的方式进行精确设定,并可以设置最大和最小值。
  3. 内部元素可以设置自己所在的行和列Grid.Row和Grid.Column,还可以设置自己纵向跨几行Grid.RowSpan,横向跨几列 Grid.ColumnSpan。
  4. 可以设置Children元素的对齐方向:水平HorizontalAlignment,垂直VerticalAlignment。

下图为Grid的Row(行)和Column(列)用法:

可以看到行和列都只有两个,因为属性Width为Auto时,如果其内部没有任何子元素时,默认宽度为0。

 

再就是DockPanel(泊靠式面板),通过这个面板可以使元素以描点的形式排列,会根据定义的顺序占领边角,所有控件绝不会交叠,专适应自适应窗口的布局。

其中如果没给最后一个元素任何停靠方向属性,那么他将会填充剩余的空间。

 

然后就是StackPanel(栈式面板),StackPanel就是将控件按照行或列来顺序排列,但不会换行。下面是相关的属性表:

 

看一个横向累积和向右对齐的例子:

 

当然也可以设置内容的对齐改变排列的顺序

WrapPanel(自动折叠面板),将各个控件从左至右按照行或列的顺序罗列,当长度或高度不够时就会自动调整进行换行,后续排序按照从上至下或 从右至左的顺序进行。

 

 

UniformGrid(均分布局),每个单元格的大小相同,不需要定义行列集合。

 

 

如上图大概就是这样的一种布局,UniformGrid 中的第一个子元素不一定必须在第一行第一个单元格。设置FirstColumn 属性可以设置子元素显示的起始列。

Canvas(画布面板),用于完全控制每个元素的精确位置。他是布局控件中最为简单的一种,直接将元素放到指定位置,主要来布置图面,Canvas允许子元素的部分或全部超过其边界,默认不会裁剪子元素,如果将ClipToBounds属性设为true,在设计界面将会对子元素的超出部分进行裁剪,如图:

 

 

 

以上就是我对XAML布局的浅面理解如果有不懂或疑问的请在评论区留言。


版权声明:本文为Zhuxxxxx原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。