WPF学习(3)- WrapPanel控件(瀑布流布局)+DockPanel控件(停靠布局)
WrapPanel控件(瀑布流布局)
WrapPanel控件表示将其子控件从左到右的顺序排列,如果第一行显示不了,则自动换至第二行,继续显示剩余的子控件。我们来看看它的结构定义:
public class WrapPanel : Panel
{public static readonly DependencyProperty ItemWidthProperty;public static readonly DependencyProperty ItemHeightProperty;public static readonly DependencyProperty OrientationProperty;public WrapPanel();public double ItemWidth { get; set; }public double ItemHeight { get; set; }public Orientation Orientation { get; set; }protected override Size ArrangeOverride(Size finalSize);protected override Size MeasureOverride(Size constraint);}
提供了3个属性,分别是Orientation代表子控件的排列方向,ItemWidth代表子控件的(最大)宽度,ItemHeight代表子控件的(最大)高度。默认的排列方向是水平方向。
1. 水平排列
<WrapPanel Orientation="Horizontal"><Button Content="1" Margin="5" HorizontalAlignment="Left"/><Button Content="2" Margin="5" HorizontalAlignment="Right"/><Button Content="3" Margin="5" HorizontalAlignment="Center"/><Button Content="4" Margin="5" HorizontalAlignment="Stretch"/><Button Content="5" Margin="5" /><Button Content="6" Margin="5" /><Button Content="7" Margin="5" /><Button Content="8" Margin="5" /><Button Content="9" Margin="5" /><Button Content="10" Margin="5" /></WrapPanel>
注意:
WrapPanel的子元素的高度和宽度都是根据子元素自身内容的尺寸呈现。另外,当WrapPanel处于水平排列时,子元素的HorizontalAlignment是不起作用的。
2. 垂直排列
<WrapPanel Orientation="Vertical"><Button Content="1" Margin="5" HorizontalAlignment="Left"/><Button Content="2" Margin="5" HorizontalAlignment="Right"/><Button Content="3" Margin="5" HorizontalAlignment="Center"/><Button Content="4" Margin="5" HorizontalAlignment="Stretch"/><Button Content="5" Margin="5" /><Button Content="6" Margin="5" /><Button Content="7" Margin="5" /><Button Content="8" Margin="5" /><Button Content="9" Margin="5" /><Button Content="10" Margin="5" /><Button Content="12" Margin="5" /><Button Content="13" Margin="5" /><Button Content="14" Margin="5" /><Button Content="15" Margin="5" /><Button Content="16" Margin="5" /><Button Content="17" Margin="5" /><Button Content="18" Margin="5" /><Button Content="19" Margin="5" /><Button Content="20" Margin="5" /></WrapPanel>
这里我们放了20个button在WrapPanel控件中,并设置Orientation属性为Vertical(垂直排列),此时,请观察前面3个按钮的HorizontalAlignment状态,可以很清晰的看到,第一个按钮居左显示,第二个按钮居右显示,第三个按钮居中显示,说明在Vertical垂直排列下,子元素的水平状态才会生效,反之亦然。
3. 指定子元素宽高
<WrapPanel Orientation="Horizontal" ItemWidth="80" ItemHeight="80"><Button Content="1" Margin="5" HorizontalAlignment="Left"/><Button Content="2" Margin="5" HorizontalAlignment="Right"/><Button Content="3" Margin="5" HorizontalAlignment="Center"/><Button Content="4" Margin="5" HorizontalAlignment="Stretch"/><Button Content="5" Margin="5" /><Button Content="6" Margin="5" /><Button Content="7" Margin="5" /><Button Content="8" Margin="5" /><Button Content="9" Margin="5" /><Button Content="10" Margin="5" /></WrapPanel>
DockPanel控件(停靠布局)
官方解释,定义一个区域,从中可以按相对位置水平或垂直排列各个子元素,先看下它的结构:
public class DockPanel : Panel
{public static readonly DependencyProperty LastChildFillProperty;public static readonly DependencyProperty DockProperty;public DockPanel();public bool LastChildFill { get; set; }public static Dock GetDock(UIElement element);public static void SetDock(UIElement element, Dock dock);protected override Size ArrangeOverride(Size arrangeSize);protected override Size MeasureOverride(Size constraint);}
DockPanel提供了一个LastChildFill 属性,用来指示最后一个子元素是否填满剩余的空间。其次,它还提供了一个枚举依赖属性,叫Dock。这个属性是附加到子元素身上的,用来指示子元素在DockPanel显示停靠方位,其值分为Left,Right,Top,Bottom。
DockPanel因为继承了FrameworkElement基类,所以还可以使用FrameworkElement基类的HorizontalAlignment(水平对齐)和VerticalAlignment(垂直对齐)两个属性,用来设置子元素的排列方式。
1. 经典布局
<DockPanel><Button DockPanel.Dock="Left" Content="1" Margin="5" /><Button DockPanel.Dock="Top" Content="2" Margin="5" /><Button DockPanel.Dock="Right" Content="3" Margin="5" /><Button DockPanel.Dock="Bottom" Content="4" Margin="5" /><Button Content="5" Margin="5" /></DockPanel>
这是DockPanel最经典的布局方式,上下左右都停靠一个控件,中间剩余的空间,全部由最后一个控件填满。
2. 水平布局
<DockPanel LastChildFill="False" HorizontalAlignment="Center"><Button Content="1" Margin="5" /><Button Content="2" Margin="5" /><Button Content="3" Margin="5" /><Button Content="4" Margin="5" /><Button Content="5" Margin="5" /></DockPanel>
我们只需要设置LastChildFill为False,并设置HorizontalAlignment属性,并再指定子控件的停靠方向。
或者
<DockPanel LastChildFill="False" VerticalAlignment="Top"><Button Content="1" Margin="5"/><Button Content="2" Margin="5"/><Button Content="3" Margin="5"/><Button Content="4" Margin="5"/><Button Content="5" Margin="5"/></DockPanel>
相关文章:
WPF学习(3)- WrapPanel控件(瀑布流布局)+DockPanel控件(停靠布局)
WrapPanel控件(瀑布流布局) WrapPanel控件表示将其子控件从左到右的顺序排列,如果第一行显示不了,则自动换至第二行,继续显示剩余的子控件。我们来看看它的结构定义: public class WrapPanel : Panel {pub…...
【Golang 面试 - 进阶题】每日 3 题(十三)
✍个人博客:Pandaconda-CSDN博客 📣专栏地址:http://t.csdnimg.cn/UWz06 📚专栏简介:在这个专栏中,我将会分享 Golang 面试中常见的面试题给大家~ ❤️如果有收获的话,欢迎点赞👍收藏…...
智慧公厕系统解决方案实现更人性化的服务
在当今数字化和智能化飞速发展的时代,公共厕所也迎来了一场前所未有的变革——智慧公厕系统解决方案的出现。这一创新的举措不仅提升了公厕的管理效率,更为使用者带来了更加人性化的服务体验。 一、智慧公厕系统在智能化的环境监测方面 通过安装各类传感…...
springcloud loadbalancer nacos无损发布
前言 故事背景 jenkins部署时总是会有几秒钟接口调用报错,观察日志是因为流量被下发到已下线的服务,重启脚本在停止应用之前先调用nacos注销实例api后再重启依然会短暂出现此问题。项目架构是springcloud alibaba,通过openfeign进行微服务之间调用&…...
Jmeter性能压测4000并发
性能测试的底层逻辑 程序为什么会有性能问题 用户操作 客户端(web/app/小程序)触发网络请求,服务器处理大量网络请求代码运行需要大量服务器资源(CPU、内存、网络、磁盘等等) 资源不是无限,硬件配置不是随…...
简单猜谜小程序开发
了解小程序的结构 项目根目录 包含小程序的配置文件和其他资源。 页面目录 每个页面都有独立的目录,通常包含 .json、.wxml、.wxss、.js 文件: .json:页面配置文件,用于配置页面的窗口表现等。 .wxml:页面的布局文件…...
下列关于活动单元教学策略的表述,有误的一项是()
下列有关基于语文学科核心素养培育的教学策略的表述,有误的一项是( ) 2024年中职语文统编教材线上培训答案 A.整体化策略:破解教学内容碎片化B.意义化策略:破解教学目的功利化 C.活动化策略:破解学习过程静态化D.标准化策略,破解教学对象差异化 下列…...
大模型日报 2024-08-03
大模型日报 2024-08-03 大模型资讯 Meta推出有史以来最大的开源AI模型 摘要: Meta发布了历史上最大的开源AI模型,标志着AI技术的民主化和透明化未来。然而,这些模型也可能被滥用,并引发伦理问题。 新技术可防止开源AI被滥用 摘要: 研究人员开…...
Python 爬虫入门(九):Scrapy安装及使用「详细介绍」
Python 爬虫入门(九):Scrapy安装及使用「详细介绍」 前言1. Scrapy 简介2. Scrapy 的安装2.1 环境准备2.2 安装 Scrapy 3. 创建 Scrapy 项目3.1 创建项目3.2 项目结构简介 4. 编写爬虫4.1 创建爬虫4.2 解析数据4.3 运行爬虫 5. 存储数据5.1 存…...
SpringBoot3 配置Logback日志滚动文件
简介 本文介绍了在SpringBoot3中配置Logback日志滚动文件的方法,因为SpringBoot3内置的logback版本是1.4.14,之前使用SpringBoot2.1.5的logback配置发现有些东西不能生效了 环境 SpringBoot v3.3.2 内置的logback-core为1.4.14 正文 <configuration …...
微信小程序开发:从小程序申请到小程序上线所需要了解的内容
简简单单 Online zuozuo: 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo 简简单单 Online zuozuo :本心、输入输出、结果 简简单单 Online zuozuo :联系我们:VX :tja6288 / EMAIL: 347969164@qq.com 文章目录 微信小程序开发:从小程序申请到小…...
计算机网络中拥塞控制的门限值怎么设置
拥塞避免的门限值设置主要涉及到加权随机早期检测(WRED)技术,这是一种拥塞避免机制,通过为每个队列设定一对低门限和高门限值来实现。具体来说,当队列长度小于低门限时,不丢弃报文࿰…...
Go语言本机多版本管理
go1.19.6 && go1.22.4 背景 当前安装的版本是1.22.4,但是对于某些项目有低版本的要求,所以说需要安装低版本 最终使用别名调用的方法 方法 安装go1.19.6压缩包 https://go.dev/dl/ 我下载该go1.19.6.darwin-arm64.tar.gz包 解压缩到指定…...
使用 Manim 创建一个二维坐标平面【NumberPlane】
NumberPlane 是 Manim 中用于创建一个二维坐标平面的类。它可以帮助用户在场景中可视化坐标轴、网格线以及其他数学概念。具体来说,它的功能包括: 坐标轴:NumberPlane 提供了 x 轴和 y 轴,通常是中心对称的,允许用户清…...
git系统学习
git系统学习 git命令行获取git 版本号 创建初始版本库创建git库初始化用户名和密码查看用户名和邮箱修改用户名和密码 将文件添加到版本库中删除暂存文件提交代码查看提交信息查看更加详细的信息查看提交差异版本库内文件的删除和重命名删除库里的文件重命名库里的文件 打标签查…...
win11启动IIS服务配置成web服务器·
为什么要将本地配置为 Web 服务器? 在 Web 开发过程中,将本地配置为 Web 服务器有诸多好处: 实时预览: 修改代码后,无需每次都上传到远程服务器,即可在本地浏览器中实时查看效果。 离线开发: 无需依赖网络连接&#x…...
JavaEE: 死锁问题详解(5000字)
文章目录 死锁的出现场景1. 一个线程一把锁,这个线程针对这把锁,连续加锁了两次2. 两个线程,两把锁3. N个线程 , M个锁4. 内存可见性为什么会出现内存可见性问题呢?解决方法 volatile关键字 总结synchronized:死锁的四个必要条件(缺一不可)[重点]:内存可见性问题: 死锁的出现场…...
Java程序员接单分享
作为一名Java程序员,这阵子通过承接些小型项目,我顺利跨过了月薪破万的门槛。这些项目虽小,却如同磨刀石般,让我在实战中发现了自身技术栈的棱角与不足,尤其是意识到了在Java这一浩瀚技术海洋中的诸多未知领域。我深知…...
人工智能深度学习系列—深度学习中的相似性追求:Triplet Loss 全解析
人工智能深度学习系列—深度解析:交叉熵损失(Cross-Entropy Loss)在分类问题中的应用 人工智能深度学习系列—深入解析:均方误差损失(MSE Loss)在深度学习中的应用与实践 人工智能深度学习系列—深入探索KL…...
二十八、【人工智能】【机器学习】- 隐马尔可夫模型 (Hidden Markov Models, HMMs)
系列文章目录 第一章 【机器学习】初识机器学习 第二章 【机器学习】【监督学习】- 逻辑回归算法 (Logistic Regression) 第三章 【机器学习】【监督学习】- 支持向量机 (SVM) 第四章【机器学习】【监督学习】- K-近邻算法 (K-NN) 第五章【机器学习】【监督学习】- 决策树…...
调用azure的npm实现outlook_api模拟查看邮件、发送邮件(实现web版接受outlook邮件第一步)
文章目录 ⭐前言⭐注册azure应用💖添加权限 ⭐调用npm 实现收发邮件💖安装依赖💖创建appSettings.js 放置密钥💖创建graphHelper.js封装功能💖主文件index.js 对外暴露💖效果 ⭐结束 ⭐前言 大家好&#x…...
关于使用Next遇到的一些新特性
用next之后发现,这是作为全栈比较好用的框架 API 1、app Router 这是目前next官方以及未来推荐的新技术方向 若使用api路由用来管理后端api接口 (1)此时在app文件夹下创建 api名称目录(如 getApiKey) (…...
【Linux 驱动】IMX6ULL input驱动
1. input子系统介绍 input 子系统分为 input 驱动层、input 核心层、input 事件处理层,最终给用户空间提供可访问的设备节点。 驱动层:输入设备的具体驱动程序,比如按键驱动程序,向内核层报告输入内容核心层:承上启下…...
Docker常用的一些命令
Docker 提供了一系列命令来管理和操作容器、镜像、网络和卷。以下是一些常用的 Docker 命令及其简单示例: 基本命令 启动 Docker sudo systemctl start docker停止 Docker sudo systemctl stop docker重启 Docker sudo systemctl restart docker查看 Docker 状态…...
不同环境下RabbitMQ的安装-3 操作RabbitMQ
前面两篇从不同环境下RabbitMQ的安装-1 为什么要使用消息服务 到同环境下RabbitMQ的安装-2 ARM架构、X86架构、Window系统环境下安装RabbitMQ介绍了关于如何在ARM架构、X86架构和Window系统下如何安装,各位小伙伴可以根据自己的实际开发场景参考安装。 到本篇是一些…...
十二、享元模式
文章目录 1 基本介绍2 案例2.1 Digit 接口2.2 Color 枚举2.3 BigDigit 类2.4 DigitFactory 类2.5 Client 类2.6 Client 类的测试结果2.7 总结 3 各角色之间的关系3.1 角色3.1.1 Flyweight ( 抽象享元 )3.1.2 ConcreteFlyweight ( 具体享元 )3.1.3 UnsharedFlyweight ( 非享元 )…...
Istio 金丝雀发布
转载:备考ICA-Istio 金丝雀实验4 环境清理 kubectl delete gw/helloworld-gateway vs/helloworld dr/helloworld-destination #测试 kubectl get svc,pods for i in {1..10};do curl $(kubectl get svc helloworld|grep helloworld|awk {print $3":"$5}|a…...
批发行业进销存-登录适配 android 横竖屏幕 源码CyberWinApp-SAAS 本地化及未来之窗行业应用跨平台架构
一、横竖屏切换的意义 以下是移动端横屏竖屏可切换在进销存中的一些重要应用: a、数据录入与查看 在录入商品信息、库存数量等大量数据时,横屏模式可以提供更宽阔的输入区域,减少输入错误。例如,在输入长串的商品编码或详细的商…...
Python进阶 JSON数据,pyecharts制图
目录 json数据格式的转换 什么是json json本质 注意 pyecharts快速入门 画一个最简单的折线图 使用全局配置选项优化折线图 总结 json数据格式的转换 什么是json 一种轻量级的数据交换格式,可以按json指定的格式去组织和封装数据 json本质 带有特定格式的…...
富士乐施5070-V打印机驱动安装
富士乐施5070-V打印机驱动安装 特指打印A3纸张需求,即驱动中能够选择纸张类型(安装选择305df驱动只能打印A4类型) 富士乐施打印机驱动下载网址: https://m3support-fb.fujifilm-fb.com.cn/driver_downloads/www/ 安装流程&…...
目标检测 | yolov4 原理和介绍
1. 简介 YOLOv4是一种高效且准确的目标检测模型,它在YOLOv3的基础上引入了多项改进,这些改进主要集中在网络结构的优化和训练技巧的更新上。以下是YOLOv4中的一些关键技术或模块,它们对提高目标检测性能起到了重要作用: CSPDarkne…...
扩散模型系列笔记(一)——DDPM
直观理解 扩散模型分为前向过程(扩散过程,Data → \to →Noise)和后向过程(生成过程或逆扩散过程,Noise → \to →Data)。在前向过程中,对于每一个观测样本,不断向样本中添加少量噪…...
【Nuxt】自定义插件和生命周期
自定义插件 方式一: app.vue // 创建插件(在app.vue中创建全局可以使用 而在某个页面中创建只有该页面可以使用) // 方式一: const nuxtApp useNuxtApp(); nuxtApp.provide("formDate", () > {return "2023-12-12"; }) nuxtAp…...
【算法】贪心算法
应用场景——集合覆盖问题 假设存在下面需要付费的广播台,以及广播台信号可以覆盖的地区。如何选择最少的广播台,让所有的地区都可以接收到信号 贪心算法介绍 1.贪心算法是指在对问题进行求解时,在每一步选择中都采取最好或者最优的选择 2…...
面试笔记 8.5
面试常见: Jvm,高并发,多线程,数据库,redis,框架 1.N I/O有什么核心组件 Java NIO 基本原理以及三大核心组件_java nio核心组件有哪些-CSDN博客 Buffer 缓冲 Channel 一对一 Channel 读取数据 Selector对应线程…...
redis面试(七)初识lua加锁脚本
redisson redisson如何来进行redis分布式锁实现的源码,基于redis实现各种各样的分布式锁的原理 https://redisson.org/ 这是官网 https://github.com/redisson/redisson/wiki/Table-of-Content 这是官方文档 开始 demo 建一个普通的工程在pom.xml里引入依赖 <…...
【mars3d】加载超图s3m模型说明
建议替换Cesium库,换成 超图版本Cesium mars3d mars3d-supermap ,需要引入的资源为: "mars3d": ["Cesium-supermap/Widgets/widgets.css", //超图版本Cesium "Cesium-supermap/Cesium.js","mars3d/plu…...
android音频录音,(三)MediaRecorder音频录音示例
1. apk触发录音启动或录音停止按键: public void onClick(View v) {switch (v.getId()) {case R.id.btn_Record: //启动录音startRecording();break;case R.id.btn_stop: //停止录音stopRecording();break;default:break;} }2. 创建MediaRecorder对象并初始化&…...
未授权访问漏洞(重点版─=≡Σ(((つ•̀ω•́)つ)
1.* Redis 搭建靶场环境: 进入目录:cd/vulhub-master/redis/4-unacc 启动:docker-compose up-d 检查:docker-compose ps vi docker-compose.yml //查看端口和版本号 安装redis工具 在kali上安装redis进行服务链接 #安装redis apt-get install redis #redi…...
数据中台之数据开发,数据开发概述与数据计算能力的类型
目录 一、数据开发概述 二、数据计算能力的类型 2.1 概述 2.2 批计算 2.2.1 概述 2.2.2 批计算模型 2.2.2.1 传统数据处理方案的问题 2.2.2.2 MapReduce模型 2.2.2.3 Spark框架 2.3 流计算 2.4 批流一体 2.5 在线查询 2.6 即席分析 一、数据开发概述 数据开发是数…...
免费的SD-WAN服务
SD-WAN,SASE,零信任是近年来比较火的概念,SD-WAN发展已经很久了,但是真正能够自主研发做SD-WAN的企业其实并不算太多。 比扬云的SD-WAN产品是自主研发的,可控性强,最重要的是具有免费版本,可以免…...
【C++】:错误处理机制 -- 异常
目录 前言一,C语言传统的处理错误的方式二,C异常的概念三,异常的使用3.1 异常的抛出和匹配原则3.2 在函数调用链中异常栈展开匹配原则3.3 异常的重新抛出3.4 异常规范 四,自定义异常体系五,异常的优缺点 点击跳转至文章…...
Cocos Creator2D游戏开发(10)-飞机大战(8)-计分和结束
现在游戏基本能完了, 飞机能发射子弹,打了敌机,敌机也能炸; 接下来要做计分了; 步骤: 搞出一个lable让lable显示炸了多少飞机 开搞: ①创建一个Lable标签 ② root.ts文件 添加 property(Label) player_score: Label; // 标签属性 标签绑定 ③ 代码添加 注册 然后回调 contac…...
image.convert()函数转换格式及显示图像的RGB三通道图像
引 言 视觉任务处理的图片按照图像通道深度分为单通道图像和多通道图像。单通道图像有grayscale灰度图、binary二值图、PNG图,多通道图像有三通道24位真彩色RGB图,8位伪彩色图像,YCbCr图像等。本文先介绍各种格式图像的特点,随后讲…...
进程学习
今天开始了进程的学习,主要讲了进程的一些命令以及进程的创建、进程的调度、进程相关的函数接口和进程消亡。在函数接口中要注意子进程和父进程的关系以及回收顺序,避免出现僵尸进程。...
【Rabbitmq的消息模型】
消息队列的特性 durable:队列持久化。如果设置持久化,那么无论RabbitMQ在关闭时,就会将队列存储到本地磁盘,无论宕机还是重启,队列也不会删除;如果设置不持久化,那么在RabbitMQ关闭时ÿ…...
The Ether: EvilScience (v1.0.1)打靶渗透【附代码】(权限提升)
靶机下载地址: https://www.vulnhub.com/entry/the-ether-evilscience-v101,212/ 1. 主机发现端口扫描目录扫描敏感信息获取 1.1. 主机发现 nmap -sn 192.168.7.0/24|grep -B 2 00:0C:29:7F:50:FB 1.2. 端口扫描 nmap -p- 192.168.7.172 1.3. 目录扫描 dirb http://192.16…...
java学习day18MyBatis2
MyBatis2 缺点 编写SQL语句工作量较大,对开发人员编写SQL语句的功底有一定的要求。 SQL语句依赖于数据库,导致数据库移植性差,不能随意更换数据库 优点 MyBatis是免费且开源的。 与JDBC相比,减少了50%以上的代码量。 MyBat…...
算法巩固——旅行商问题
旅行商问题(Traveling Salesman Problem, TSP)简介 问题描述 旅行商问题是一个经典的组合优化问题,具体描述如下: 输入:一组城市及其两两之间的距离(或成本)。目标:找到一条从一个…...
ArcMap如何将shp数据导入oracle数据库
1. 连接数据库 2.在数据库中新建要素类 3.设置要素类名称和别名以及要素类型 4. 选择该要素类的坐标系 5.导入字段,点击导入,选择shp文件,点击添加,字段就导入进来了,点击完成 6. 点击刚才创建的要素类,点击…...