WPF 面板

Border

  • BorderThickness="2"  边框宽度
  • Padding="10,10,10,10" 上下左右距离
  • CornerRadius="15"   设置圆角

Canvas面板 (基于坐标的布局)

  • Canvas.ZIndex="1"   重叠时,修改显示方式(谁覆盖谁)
    <Canvas>
            <Button Canvas.Bottom="200" Canvas.Left="200" Height="23" Width="75" Content="button1" Name="button1" ></Button>
            <Button Canvas.Bottom="300" Canvas.Left="600" Height="23" Width="75" Content="button2" Name="button2" Click="Button2_Click" ></Button>
            <DataGrid Height="133" Canvas.Left="141" Canvas.Top="173" Width="192" Canvas.ZIndex="1"/>
        </Canvas>
    private void Button2_Click(object sender, RoutedEventArgs e)
            {
                Canvas.SetZIndex(this.button1, 3);
            }
  • InkCanvas 元素
    (包含两个子内容集合,1、child集合——保存任意子元素   2、Strokes集合,保存了Ink.Stroke对象,表示用户在InkCanvas上绘制的图形输入。用户绘制的每一个直线或者曲线都会变成一个对象)

  几种模式

    • None=0                           // 忽略鼠标和手写笔输入
    • Ink = 1                            // 允许用户绘制批注,默认模式。使用鼠标或者手写笔绘图时,会绘制笔画
    • GestureOnly = 2            // 不远许用户绘制笔画批注,但会关注预先定义的特定姿势,由System.Windows.Ink.ApplicationGesture定义笔势
    • InkAndGesture = 3        // 允许用户绘制壁画批注,也可以识别预先定义的姿势
    • Select = 4                     // 允许用户选择保存在Children集合中的元素,要选择一个元素用户必须单机该元素或者拖动套索选择该元素,一旦选择一个元素就可以移动该元素,改变其尺寸或将其删除
    • EraseByPoint = 5         // 擦除鼠标选中的笔画
    • EraseByStroke = 6      // 擦除选中的一笔,开始到结束都会擦除
    • <InkCanvas EditingMode="GestureOnly">
      </InkCanvas>

      默认是Ink模式, 做绘版。 此种模式,只记录松开鼠标不保存。

    • Select模式下,可以对选中元素做一些操作

      <InkCanvas EditingMode="Select">
              <Button InkCanvas.Left="50" InkCanvas.Top="80" Content="Button1"/>
       </InkCanvas>

    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="30"/>
            <RowDefinition/>
        </Grid.RowDefinitions>
        
        <StackPanel Grid.Row="0" Grid.ColumnSpan="2">
            <ComboBox Name="EditingMode" Margin="5" SelectionChanged="ComboBox_SelectionChanged"/>
        </StackPanel>

        <InkCanvas  Name ="InkCanvas" EditingMode="None" Grid.Row="1" Grid.ColumnSpan="2" Background="DarkSalmon">
            <Button InkCanvas.Left="50" InkCanvas.Top="80" Content="Button1"/>
        </InkCanvas>
    </Grid>
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            foreach (InkCanvasEditingMode mode in Enum.GetValues(typeof(InkCanvasEditingMode)))
            {
                this.EditingMode.Items.Add(mode);
            }
            this.EditingMode.SelectedIndex = 0;
        }

        private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            this.InkCanvas.EditingMode =(InkCanvasEditingMode)this.EditingMode.SelectedItem;
        }

StackPanel 面板  (包含元素默认从上到小排列)

  • Orientation="Horizontal" 从左到右 

WrapPanel面板 (包含元素默认从左到右排列,自动换行)

DockPanel面板 自动布局上下左右拉伸等高等宽,最后一个元素占满所有控件。

  • DockPanel.Dock="Bottom"

面板嵌套

    <DockPanel>
        <StackPanel DockPanel.Dock="Bottom" Orientation="Horizontal" HorizontalAlignment="Right">
            <Button Name="Button1"  DockPanel.Dock="Bottom" Content="Button1" Margin="10"  Padding="3" ></Button>
            <Button Name="Button2" Content="Button2" DockPanel.Dock="Top" Margin="10" Padding="3"></Button>
        </StackPanel>
        <TextBlock x:Name="textbolck1" DockPanel.Dock="Top"> this is a test</TextBlock>
    </DockPanel>

Grid面板

  • Grid.Row
  • Grid.Column
  • Grid.ColumnSpan
  • GridSplitter 分割窗口(使面板可滑动一部分)

    <Grid>
        <Grid.Background>
            <LinearGradientBrush EndPoint="0.5,1" MappingMode="RelativeToBoundingBox" StartPoint="0.5,0">
                <GradientStop Color="#FFB5E3F7" Offset="0.161"/>
                <GradientStop Color="#FFF7B4B4" Offset="0.997"/>
            </LinearGradientBrush>
        </Grid.Background>

        <Grid.ColumnDefinitions>
            <ColumnDefinition MinWidth="50"/>
            <ColumnDefinition Width="8"/>
            <ColumnDefinition MinWidth="50" />
            <ColumnDefinition Width="1.2*"/>
            
        </Grid.ColumnDefinitions>

        <Grid.RowDefinitions>
            <RowDefinition/>
            <RowDefinition/>
        </Grid.RowDefinitions>

        <Border BorderThickness="2" Padding="10" CornerRadius="50" Background="AliceBlue">
            <StackPanel Name ="stackPanel1" Grid.Row="0" Grid.Column="0" Margin="3" Grid.RowSpan="2">
                <Label Content="Label" Name="Label1" Width="75" Height="35" HorizontalAlignment="Center"></Label>
                <Button Name="Button1" Content="Button1" Width="75" Height="25"></Button>
                <Button Name="Button2" Content="Button2" Width="75" Height="25"></Button>
                <Button Name="Button3" Content="Button3" Width="75" Height="25"></Button>
            </StackPanel>
        </Border>

        <GridSplitter Grid.Column="1" Width="3" Grid.RowSpan="2" VerticalAlignment="Stretch" HorizontalAlignment="Center"/>
        <Button Grid.Column="2" Grid.Row="0" Name="Button11"   Content="Button11"  ></Button>
        <Button  Grid.Column="2" Grid.Row="1" Grid.ColumnSpan="2" Name="Button22" Content="Button22" Padding="3" ></Button>
    </Grid>
  • 共享尺寸组(保持用户控件尺寸的一致性)

    SharedSizeGroup = "name"    在嵌套的Grid中 1*2 格, 两个并列的Grid,在设置行列时候定义相同的名称
  需要设置,Grid属性  Grid.IsSharedSizeScope="True"

    <Grid ShowGridLines="True" Grid.IsSharedSizeScope="True">
        <Grid.RowDefinitions>
            <RowDefinition/>
            <RowDefinition Height="30"/>
            <RowDefinition/>
        </Grid.RowDefinitions>
        <Grid Grid.Row="0" ShowGridLines="True">
            <Grid.ColumnDefinitions>
                <ColumnDefinition  SharedSizeGroup="sameSize" />
                <ColumnDefinition />
                <ColumnDefinition/>
            </Grid.ColumnDefinitions>
            <TextBlock Margin="5">Happy Happy Happy Day !</TextBlock>
            <TextBlock Grid.Column="1"  Margin="5">Happy Work  !</TextBlock>
            <TextBlock Grid.Column="2"  Margin="5">Happy Study !</TextBlock>
        </Grid>
        <Grid Grid.Row="1">
            <Label Content="Learing WPF Happy!"/>
        </Grid>
        <Grid Grid.Row="2" ShowGridLines="True">
            <Grid.ColumnDefinitions>
                <ColumnDefinition  SharedSizeGroup="sameSize" />
                <ColumnDefinition/>
            </Grid.ColumnDefinitions>
            <TextBlock Grid.Column="0" Margin="5">Happy  !</TextBlock>
            <TextBlock Grid.Column="2" Margin="5">Happy Happy !</TextBlock>
        </Grid>
    </Grid>

文档大纲:查看结构

 

原文地址:https://www.cnblogs.com/codinghard/p/15621110.html