(3) WPF 布局

所有的布局都派生自System.Windows.Controls.Planel抽象类

一、StackPanel

水平或垂直放置元素,通常用于更大,更复杂窗体中的小区域

1.

 每个元素占一行,默认垂直排列。高度随内部大小

    <StackPanel>
        <Button>a</Button>
        <Button>b</Button>
        <Button>c</Button>
    </StackPanel>

2.属性

设置对齐方式

<StackPanel VerticalAlignment="Bottom">

设置水平垂直排列

<StackPanel Orientation="Horizontal">

设置四周距离

一个参数表示all,两个参数上下,四个参数 左上右下

<StackPanel Margin="15">
<StackPanel Margin="12,16">

设置控件最大或最小宽高

<Button MinHeight="30">a</Button>

 Border边框

二、WrapPanel

 按顺序排列,默认一行满后到下一行。每一行的高度,由最高的控件决定

    <WrapPanel>
        <Button>a</Button>
        <Button>bbbbb</Button>
        <Button>c</Button>
    </WrapPanel>

三、DockPanel

指定停靠的位置

    <DockPanel LastChildFill="True">
        <Button DockPanel.Dock="Top">a</Button>
        <Button>bbbbb</Button>
        <Button>c</Button>
    </DockPanel>

四、Grid

 1.利用不可见的表格在行和列中排列元素,是最灵活、最常用的容器

 (1)

    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition></RowDefinition>
            <RowDefinition></RowDefinition>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition></ColumnDefinition>
            <ColumnDefinition></ColumnDefinition>
            <ColumnDefinition></ColumnDefinition>
        </Grid.ColumnDefinitions>

        <Button Grid.Row="0" Grid.Column="1">0,1</Button>
        <Button Grid.Row="1" Grid.Column="2">1,2</Button>
    </Grid>

 如果不设置 Grid.Row,Grid.Column 默认为0

 (2)

设置Grid绝对尺寸

该列无论放大缩小窗体,宽度固定是30

<ColumnDefinition Width="30"></ColumnDefinition>

设置自动尺寸 

随内部控件大小变化,不随窗体变化

<ColumnDefinition Width="Auto"></ColumnDefinition>

设置按比例尺寸

跟随窗体大小变化。貌似默认不写,就是这个

<ColumnDefinition Width="*"></ColumnDefinition>

按权重分配剩余空间

<ColumnDefinition Width="*"></ColumnDefinition>
<ColumnDefinition Width="2*"></ColumnDefinition>

2.布局舍入

所有内容对齐到最近的像素边界,消除模糊问题

<Grid UseLayoutRounding="True">

3.跨越行列

横跨两列

<Button Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2">abc</Button>

4.分割窗口

5.共享尺寸组

五、UniformGrid

单元格空间均匀分配

    <UniformGrid>
        <Button >a</Button>
        <Button>bbbbb</Button>
        <Button>c</Button>
    </UniformGrid>

六、Canvas

基于坐标的布局

默认都在左上角覆盖

    <Canvas>
        <Button>a</Button>
        <Button>bbb</Button>
        <Button Canvas.Bottom="10">c</Button>
    </Canvas>

原文地址:https://www.cnblogs.com/buchizaodian/p/10057524.html