003面板

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 平面中的显示顺序。

 

posted @ 2021-09-29 14:55  苏文cjp  阅读(19)  评论(0编辑  收藏  举报