1、StackPanel
栈面板,可以将元素排列成一行或者一列。
其特点是:每个元素各占一行或者一列。Orientation属性指定排列方式:Vertical(垂直)【默认】、Horizontal(水平)。默认情况下,水平排列时,每个元素都与面板一样高;垂直排列时,每个元素都与面板一样宽
2、WrapPanel
环绕面板,当元素布局到达边界时,可以自动换行。用法与StackPanel一样。
3、DockPanel
停靠面板,可以将面板的某一边指定给每个元素,当面板大小变化时,按钮将根据指定的边进行停靠。
在DockPanel中,指定停靠边的控件,会根据定义的顺序占领边角,所有控件绝不会交叠。默认情况下,后添加的元素只能使用剩余空间,最后一个元素填充所有剩余空间。
如果不希望最后一个元素填充剩余区域,可以将DockPanel属性LastChildFill设置为False。
4、Canvas
画布,用于完全控制每个元素的精确位置。
他是布局控件中最为简单的一种,直接将元素放到指定位置,主要来布置图画。
使用Canvas时,必须指定一个字元素的位置(相对于画布),否则所有元素都将出现在画布的左上角。
调整位置用Left、Right、Top和Bottom四个附加属性。
如果Canvas是窗口主元素,用户改变窗口大小时,Canvas也会随之变化,字元素的位置也会随之移动,以保证相对于Canvas的位置属性不变。
Canvas允许子元素的部分或全部超过其边界,默认不会剪裁子元素,同时可以使用负坐标,因此画布不需要指定大小。
如果想复制画布内容,将ClipToBounds设为true即可。
5、Grid
网格面板,以表格形式布局元素,对于整个面板上的元素进行布局,有效地解决多行之间、多列之间位置的一致性。
Grid很像网页中的Table,定义一个网格,需要定义行、列,划分单元格,坐标从(0,0)开始。列宽和行高,分别可以在ColumnDefinition、RowDefinition里面指定Width、Height的值。
首先定义网格,然后定义元素,并指定元素所在的单元格。
如果不定义单元格,默认将元素放到第一个单元格(0,0)。
6、UniformGrid
均布网格, 顾名思义,所有单元格均匀排布,大小都相同。你可以为其指定行数Rows和列数Columns,UniformGrid将根据行列平分画布,每个控件一个单元格。
7、Border
在另一个元素四周绘制边框和/或背景。
8、InkCanvas
定义接收和显示墨迹笔划的区域。
案例:
<Window x:Class="WpfApp3.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:WpfApp3" mc:Ignorable="d" Title="MainWindow" Height="473.766" Width="862.294" Loaded="Window_Loaded" > <Grid HorizontalAlignment="Left" Margin="29,28,0,0" VerticalAlignment="Top" Width="764" > <InkCanvas EditingMode="None" Name="xxxx" Margin="20,18,299.048,11" Background="#FFDEC4C4" /> <Label Name="zzzz" Content="Label" HorizontalAlignment="Left" Margin="560,83,0,0" VerticalAlignment="Top" RenderTransformOrigin="13.254,-0.127"/> <Button Content="Button" HorizontalAlignment="Left" Margin="564,232,0,0" VerticalAlignment="Top" Width="75" RenderTransformOrigin="1.569,3.35"/> <ComboBox x:Name="comboxdata" DropDownClosed="comboxdata_DropDownClosed" Margin="467,20,94.048,290" SelectionChanged="comboxdata_SelectionChanged"/> </Grid> </Window>
using System; using System.Windows; using System.Windows.Controls; namespace WpfApp3 { /// <summary> /// MainWindow.xaml 的交互逻辑 /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); } private void comboxdata_SelectionChanged(object sender, SelectionChangedEventArgs e)//窗体加载事件 { xxxx.EditingMode =(InkCanvasEditingMode) comboxdata.SelectedItem; } private void Window_Loaded(object sender, RoutedEventArgs e)//combobox选择改变事件 { foreach (InkCanvasEditingMode mode in Enum.GetValues(typeof(InkCanvasEditingMode))) { comboxdata.Items.Add(mode); } comboxdata.SelectedIndex = 0; } } }
7、常用属性
属性:
Orientation:取相
HorizontalAlignment:水平对齐特征
VerticalAlignment:垂直对齐特征
Margin:元素外边距
BorderBrush:边界画刷
BorderThickness:边界厚度
Padding:边框和内部元素距离
CornerRadius:圆角尺寸
LastChildFill:该值指示 DockPanel中的最后一个子元素是否拉伸以填充剩余的可用空间。
UseLayoutRounding:是否应向此元素的大小和位置布局应用布局舍入。
EditingMode:获取或设置活动指针设备使用的用户编辑模式。
-
None=0// 忽略鼠标和手写笔输入
-
Ink = 1// 允许用户绘制批注,默认模式。使用鼠标或者手写笔绘图时,会绘制笔画
-
GestureOnly = 2// 不远许用户绘制笔画批注,但会关注预先定义的特定姿势,由System.Windows.Ink.ApplicationGesture定义笔势
-
InkAndGesture = 3// 允许用户绘制壁画批注,也可以识别预先定义的姿势
-
Select = 4// 允许用户选择保存在Children集合中的元素,要选择一个元素用户必须单机该元素或者拖动套索选择该元素,一旦选择一个元素就可以移动该元素,改变其尺寸或将其删除
-
EraseByPoint = 5// 擦除鼠标选中的笔画
-
EraseByStroke = 6// 擦除选中的一笔,开始到结束都会擦除
附加属性:
DockPanel.Dock设置在DockPanel里面的位置。
Grid.Column:指示应显示 Grid中的哪个子内容列。
Grid.Row:指示应显示 Grid中的哪个子内容行。
Grid.RowSpan:该值表示在一个 Grid中子内容所跨越的总行数。
Grid.ColumnSpan:该值表示在一个 Grid 中子内容所跨越的总列数。
Canvas.ZIndex:该值表示元素在 Z 平面中的显示顺序。