浅谈WPF之UI布局-WrapPanel环绕面板

时间:2024-01-25 18:56:30

WrapPanel布局面板将各个控件从左至右按照行或列的顺序罗列,当长度或高度不够时就会自动调整进行换行后续排序按照从上至下或从左至右的顺序进行。

水平排列:当Orientation属性的值设置为 Horizontal:元素是从左向右排列的,然后自上至下自动换行。如下所示:

图片

 示例源码所示:

<Window x:Class="WpfApp1.ThirdWindow"
        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:WpfApp1"
        mc:Ignorable="d"
        Title="WrapPanel示例" Height="450" Width="400">
    <WrapPanel Margin="5,5,5,5">
        <Button x:Name="button1" Content="第一个按钮" Margin="2,5,2,5"></Button>
        <Button x:Name="button2" Content="第二个按钮" Margin="2,5,2,5"></Button>
        <Button x:Name="button3" Content="第三个按钮" Margin="2,5,2,5"></Button>
        <Button x:Name="button4" Content="第四个按钮" Margin="2,5,2,5"></Button>
        <Button x:Name="button5" Content="第五个按钮" Margin="2,5,2,5"></Button>
        <Button x:Name="button6" Content="第六个按钮" Margin="2,5,2,5"></Button>
        <Button x:Name="button7" Content="第七个按钮" Margin="2,5,2,5"></Button>

    </WrapPanel>
</Window>

垂直排列:默认为水平排列,通过设置WrapPanel的Orientation属性为Vertical,可以修改排列方向,垂直排列,如下所示:

图片

 示例源码如下所示:

<WrapPanel Margin="5,5,5,5" Orientation="Vertical">
    <Button x:Name="button1" Content="第一个按钮" Margin="2,5,2,5" Height="40"></Button>
    <Button x:Name="button2" Content="第二个按钮" Margin="2,5,2,5" Height="40"></Button>
    <Button x:Name="button3" Content="第三个按钮" Margin="2,5,2,5" Height="40"></Button>
    <Button x:Name="button4" Content="第四个按钮" Margin="2,5,2,5" Height="40"></Button>
    <Button x:Name="button5" Content="第五个按钮" Margin="2,5,2,5" Height="40"></Button>
    <Button x:Name="button6" Content="第六个按钮" Margin="2,5,2,5" Height="40"></Button>
    <Button x:Name="button7" Content="第七个按钮" Margin="2,5,2,5" Height="40"></Button>

</WrapPanel>

WrapPanel其他常用属性,除了StackPanel属性常用属性,还有两个,如下所示:

  1. ItemHeight:所有的元素都相同高度。

  2. ItemWidth:所有的元素都相同宽度。

其他子元素设置的属性,如果大于ItemHeight,ItemWidth的值,则被截取。如下所示:

 源码如下所示:

<WrapPanel Margin="5,5,5,5" Orientation="Vertical" ItemHeight="30" ItemWidth="100">
    <Button x:Name="button1" Content="第一个按钮" Margin="2,5,2,5" Height="40"></Button>
    <Button x:Name="button2" Content="第二个按钮" Margin="2,5,2,5" Height="40"></Button>
    <Button x:Name="button3" Content="第三个按钮" Margin="2,5,2,5" Height="40"></Button>
    <Button x:Name="button4" Content="第四个按钮" Margin="2,5,2,5" Height="40"></Button>
    <Button x:Name="button5" Content="第五个按钮" Margin="2,5,2,5" Height="40"></Button>
    <Button x:Name="button6" Content="第六个按钮" Margin="2,5,2,5" Height="40"></Button>
    <Button x:Name="button7" Content="第七个按钮" Margin="2,5,2,5" Height="40"></Button>

</WrapPanel>