XAML布局面板

分类:

  • Grid:网格;可以自定义行和列并通过行列的数量、行高和列宽来调整控件的布局。类似于HTML中的table。
  • DockPanel:泊靠式面板;内部元素可以选择泊靠方向,类似于在Windows Form编程中设置控件的Dock属性。
  • StackPanel:栈式面板;可将包含的元素在竖直或水平方向上排成一条直线,当移除一个元素后,后面的元素会自动向前移动以填充空缺。
  • WrapPanel:自动折行面板; 内部元素在排满一行后能够自动折行,类似于HTML中的流式布局
  • Canvas:画布;内部元素可以使用以像素为单位的绝对坐标进行定位,类似于Windows Form编程的布局方式。
  1. Grid:网格

特点:

      1. 可以定义任意数量的行和列;
      2. 行的高度和列的宽度可以使用绝对值、相对比列或自动调整的方式进行精确设定,还可以设置最大值和最小值;
      3. 内部元素可以设置自己所在的列,还可以设置自己纵向跨几行、横向跨几列;
      4. 可以设置Children元素的对齐方向

行高、列宽为比例值:double数值后加一个星号(*)

看下面一个例子:

<Grid ShowGridLines="True">

        <Grid.ColumnDefinitions>

            <ColumnDefinition Width="160*"/>

            <ColumnDefinition Width="160*"/>

            <ColumnDefinition Width="160*"/>

            <ColumnDefinition Width="160*"/>

        </Grid.ColumnDefinitions>

        <Grid.RowDefinitions>

            <RowDefinition Height="80*"/>

            <RowDefinition Height="80*"/>

            <RowDefinition Height="90*"/>

        </Grid.RowDefinitions>

</Grid>

行高、列宽为绝对值:直接double数值或者在后面加个单位后缀

行高、列宽为自动值:字符串Auto

看下面一个例子,

<Grid>

        <Grid.ColumnDefinitions>

            <ColumnDefinition Width="140"/>

            <ColumnDefinition Width="90"/>

            <ColumnDefinition Width="150"/>

            <ColumnDefinition Width="142"/>

        </Grid.ColumnDefinitions>

        <Grid.RowDefinitions>

            <RowDefinition Height="62"/>

            <RowDefinition Height="60"/>

            <RowDefinition Height="77"/>

            <RowDefinition Height="51"/>

        </Grid.RowDefinitions>

<TextBlock Text="What is your first name?" FontSize="15" VerticalAlignment="Center" HorizontalAlignment="Center" Grid.Row="0" Grid.Column="0" Grid.ColumnSpan="2"/>

<TextBox BorderBrush="Blue" Height="30" Width="160" Grid.Row="0" Grid.Column="2" Grid.ColumnSpan="2" FontSize="20"/>

<TextBlock Text="What is your last name?" FontSize="15" VerticalAlignment="Center" HorizontalAlignment="Center" Grid.Row="1" Grid.Column="0" Grid.ColumnSpan="2"/>

<TextBox BorderBrush="Blue" Height="30" Width="160" Grid.Row="1" Grid.Column="2" Grid.ColumnSpan="2" FontSize="20"/>

<Button Width="80" Height="30" Content="Starting" Background="#FFECEED1" Grid.Column="1" Grid.Row="2"/>

<Button Width="80" Height="30" Content="Ending" Background="#FFD1EBEE" Grid.Column="2" Grid.Row="2"/>

    </Grid>

代码效果:

 

  1. DockPanel 泊靠式面板

有一个重要的属性:LastChildFill 默认是true,占满剩下的位置

 看下面一个例子:

<Grid>

        <DockPanel>

            <TextBox DockPanel.Dock="Top" Height="25" BorderBrush="Blue"/>

            <TextBox DockPanel.Dock="Left" Width="150" BorderBrush="Blue"/>

            <TextBox BorderBrush="Pink"/>

        </DockPanel>

    </Grid>

 

  1. StackPanel:栈式面板

特点:

      1. 同类元素需要紧凑排列(如制作菜单或者列表)
      2. 移除其中的元素后能够自动补缺的布局或者动画

StackPanel的三个属性:Orientation 决定内部元素是横向累计还是纵向累计

                             HorizontalAlignment 决定内部元素水平方向上的对齐方式

                             VerticalAlignment 决定内部元素竖直方向上的对齐方式

看下面一个例子:

         <StackPanel>

        <TreeViewItem>

            <TreeViewItem.Header>

                <AccessText>软件分类</AccessText>

            </TreeViewItem.Header>

            <TextBlock>编程语言</TextBlock>

            <TextBlock>软件技术</TextBlock>

            <TextBlock>Web前端</TextBlock>

            <TextBlock>软件工程</TextBlock>

        </TreeViewItem>

        <TreeViewItem>

            <TreeViewItem.Header>

                <AccessText>链接</AccessText>

            </TreeViewItem.Header>

            <TextBlock>反馈与建议</TextBlock>

            <TextBlock>官方博客</TextBlock>

            <TextBlock>电子期刊</TextBlock>

            <TextBlock>人才服务</TextBlock>

        </TreeViewItem>

    </StackPanel>

 

  1. WrapPanel:自动折行面板

可以排布尽可能多的控件,排不下的控件便会自动换行或换列继续排列。

看下面一个例子:

<WrapPanel>

        <Button Width="50" Height="50" Content="OK"></Button>

        <Button Width="50" Height="50" Content="OK"></Button>

        <Button Width="50" Height="50" Content="OK"></Button>

        <Button Width="50" Height="50" Content="OK"></Button>

        <Button Width="50" Height="50" Content="OK"></Button>

        <Button Width="50" Height="50" Content="OK"></Button>

        <Button Width="50" Height="50" Content="OK"></Button>

</WrapPanel>

 

  1. Canvas:画布

一般用于简洁布局

看下面一个例子:

<Canvas>

        <TextBlock Text="企鹅登录:" Canvas.Left="70" Canvas.Top="40"/>

        <TextBox Height="25" Width="120" Canvas.Left="180" Canvas.Top="36" FontSize="18"/>

        <TextBlock Text="企鹅密码:" Canvas.Left="70" Canvas.Top="80"/>

        <TextBox Height="25" Width="120" Canvas.Left="180" Canvas.Top="76" FontSize="18"/>

        <Button Content="确定" Canvas.Left="106" Canvas.Top="120" Width="60"></Button>

        <Button Content="取消" Canvas.Left="190" Canvas.Top="120" Width="60"/>

</Canvas>

代码结果:

 

猜你喜欢

转载自blog.csdn.net/qq_44551864/article/details/90290859