• WPF 控件专题 WrapPanel 控件详解


    1、WrapPanel 介绍

      官方释义:WrapPanel(环绕面板):按从左到右的顺序位置定位子元素,在包含框的边缘处将内容切换到下一行。 后续排序按照从上至下或从右至左的顺序进行,具体取决于 Orientation 属性的值。

        简单解析:WrapPanel 用于把子控件,以水平或者垂直方向排列,当空间不足时就会自动切换到下一行。适合于需要水平或者垂直排列控件且能自动换行的情况。

        水平方向排列时,每一行所有子控件的高度都被统一成固定的值,这个值由最高的那个决定;每一列垂直方向排列时,所有子控件的宽度都被统一成固定的值,这个值由最宽的那个决定。

    **************************************************************************************************************

    2、WrapPanel 的几个常用的属性介绍

        Orientation:获取或设置一个值,该值指定子内容的排列方向,默认是按水平方向排列;

        Background:获取或设置用于填充 Brush 的边框之间的区域的 Panel;

        Width/Height:宽度和高度;

        HorizontalAlignment:获取或设置在父元素(如 Panel 或项控件)中组合此元素时所应用的水平对齐特征;

        VerticalAlignment:获取或设置在父元素(如面板或项控件)中组合此元素时所应用的垂直对齐特征;

        Margin    :获取或设置元素的外边距;

        Opacity:透明度;        Name:元素的标识名称;        IsEnabled:使能,是否可用

        ItemHeight/ItemWidth:获取或设置一个值,该值指定 WrapPanel 中所含全部项的高度/宽度;

    **************************************************************************************************************

    3、具体示例

       代码示例一

    1. <WrapPanel Margin="10">
    2. <Border Margin="2" Width="200" Height="200" BorderBrush="Cyan" BorderThickness="1" Background="Yellow"/>
    3. <Border Margin="2" Width="200" Height="200" BorderBrush="Cyan" BorderThickness="1" Background="YellowGreen"/>
    4. <Border Margin="2" Width="200" Height="200" BorderBrush="Cyan" BorderThickness="1" Background="LightYellow"/>
    5. <Border Margin="2" Width="200" Height="200" BorderBrush="Cyan" BorderThickness="1" Background="Green"/>
    6. <Border Margin="2" Width="200" Height="200" BorderBrush="Cyan" BorderThickness="1" Background="Yellow"/>
    7. <Border Margin="2" Width="200" Height="200" BorderBrush="Cyan" BorderThickness="1" Background="YellowGreen"/>
    8. <Border Margin="2" Width="200" Height="200" BorderBrush="Cyan" BorderThickness="1" Background="LightYellow"/>
    9. <Border Margin="2" Width="200" Height="200" BorderBrush="Cyan" BorderThickness="1" Background="Green"/>
    10. </WrapPanel>
    11. <!--更改子元素大小,当宽度不足,则会显示到下一行,或者往后补全-->
    12. <WrapPanel Margin="10">
    13. <Border Margin="2" Width="200" Height="200" BorderBrush="Cyan" BorderThickness="1" Background="Yellow"/>
    14. <Border Margin="2" Width="200" Height="200" BorderBrush="Cyan" BorderThickness="1" Background="YellowGreen"/>
    15. <Border Margin="2" Width="200" Height="200" BorderBrush="Cyan" BorderThickness="1" Background="LightYellow"/>
    16. <Border Margin="2" Width="250" Height="200" BorderBrush="Cyan" BorderThickness="1" Background="Green"/>
    17. <Border Margin="2" Width="200" Height="200" BorderBrush="Cyan" BorderThickness="1" Background="Yellow"/>
    18. <Border Margin="2" Width="200" Height="200" BorderBrush="Cyan" BorderThickness="1" Background="YellowGreen"/>
    19. <Border Margin="2" Width="200" Height="200" BorderBrush="Cyan" BorderThickness="1" Background="LightYellow"/>
    20. <Border Margin="2" Width="200" Height="200" BorderBrush="Cyan" BorderThickness="1" Background="Green"/>
    21. </WrapPanel>

    代码示例二:使用垂直显示,设置子元素的宽高和水平垂直方向为居中显示,

    1. <!--设置为垂直显示-->
    2. <WrapPanel Margin="10" Orientation="Vertical" HorizontalAlignment="Center"
    3. VerticalAlignment="Center" ItemHeight="100" ItemWidth="210">
    4. <Border Margin="2" Width="200" Height="200" BorderBrush="Cyan" BorderThickness="1" Background="Yellow"/>
    5. <Border Margin="2" Width="200" Height="200" BorderBrush="Cyan" BorderThickness="1" Background="YellowGreen"/>
    6. </WrapPanel>
    7. <!--垂直显示、子元素设定固定宽高、以及水平居中、垂直居中显示-->
    8. <WrapPanel Margin="10" Orientation="Vertical" HorizontalAlignment="Center"
    9. VerticalAlignment="Center" ItemHeight="180" ItemWidth="210">
    10. <Border Margin="2" Width="200" Height="200" BorderBrush="Cyan" BorderThickness="1" Background="Yellow"/>
    11. <Border Margin="2" Width="200" Height="200" BorderBrush="Cyan" BorderThickness="1" Background="YellowGreen"/>
    12. <Border Margin="2" Width="200" Height="200" BorderBrush="Cyan" BorderThickness="1" Background="LightYellow"/>
    13. <Border Margin="2" Width="250" Height="200" BorderBrush="Cyan" BorderThickness="1" Background="Green"/>
    14. <Border Margin="2" Width="250" Height="250" BorderBrush="Cyan" BorderThickness="1" Background="Yellow"/>
    15. <Border Margin="2" Width="200" Height="200" BorderBrush="Cyan" BorderThickness="1" Background="YellowGreen"/>
    16. <Border Margin="2" Width="200" Height="200" BorderBrush="Cyan" BorderThickness="1" Background="LightYellow"/>
    17. </WrapPanel>

    **************************************************************************************************************

    4、效果图

    示例代码一效果图,左图为固定大小效果图;有图为空间不足,切到下一行显示效果图

          

     代码示例二效果图,左侧为垂直显示效果,右侧为垂直,固定子元素宽高效果图

        

    **************************************************************************************************************

    5、总结和扩展

        WrapPanel 也是一种常用的布局控件,配合其他布局控件使用,会使得界面布局更合理更美观。

    **************************************************************************************************************

  • 相关阅读:
    什么是Java中的设计模式?请列举几种常见的设计模式
    Shiro反序列化分析
    ADG5412FBRUZ-RL7应用 双电源模拟开关和多路复用器IC
    面向未来的自动化:拥抱机器人即服务(RaaS)
    聊聊前端鉴权方案
    【vue导入导出Excel】vue简单实现导出和导入复杂表头excel表格功能【纯前端版本和配合后端版本】
    input六位验证码,输入自动跳到下一格,删除自动回退到上一格
    有序矩阵中第K小元素[优先队列PriorityQueue]
    兴趣点飞行、地图相册、气体检测飞行 | 复亚智能新功能上线
    [附源码]java毕业设计旅游管理系统
  • 原文地址:https://blog.csdn.net/BYH371256/article/details/125272565