当前位置: 首页 > news >正文

WPF WrapPanel、UniformGrid、DockPanel介绍

WPF WrapPanel、UniformGrid、DockPanel介绍

WrapPanel
WrapPanel , 具有在有限的容器范围内, 可以自动换行, 或者换列处理。具体则取决于WrapPanel的排列方式 (Orientation)。

Orientation="Horizontal"时各控件从左至右罗列,当面板长度不够时,子控件就会自动换行,继续按照从左至右的顺序排列
Orientation="Vertical"时各控件从上至下罗列,当面板高度不够时,子控件就会自动换列,继续按照从上至下的顺序排列。

<Grid><WrapPanel><Button Content="Button" Width="100" Height="60"></Button><Button Content="Button" Width="150" Height="60"></Button><Button Content="Button" Width="200" Height="60"></Button><Button Content="Button" Width="250" Height="60"></Button><Button Content="Button" Width="200" Height="60"></Button><Button Content="Button" Width="150" Height="60"></Button></WrapPanel></Grid>

在这里插入图片描述

UniformGrid
每个单元格的大小相同,不需要定义行列集合。每个单元格始终具有相同的大小,每个单元格只能容纳一个控件。

与Grid不同的是, 该容器具备Columns/Rows 属性, 通过设置该属性, UniformGrid则具备相应的 行与列, 但是设置的Columns/Rows不允许单独的进行容器的大小设置
位于UniformGrid中的子元素, 按输入顺序排列至容器中, 直至填充容器的所有空间
未显示指定Columns/Rows, UniformGrid则为子元素动态分配Columns/Rows, 换行与换列的基 准主要基于UniformGrid的容器大小( 宽度与高度)。

<Grid><UniformGrid Columns="3" Rows="2"><Button Content="Button" Width="100" Height="60"></Button><Button Content="Button" Width="150" Height="60"></Button><Button Content="Button" Width="200" Height="60"></Button><Button Content="Button" Width="250" Height="60"></Button><Button Content="Button" Width="200" Height="60"></Button><Button Content="Button" Width="150" Height="60"></Button></UniformGrid></Grid>

在这里插入图片描述
DockPanel
DockPanel支持让元素简单地停靠在整个面板的某一条边上,然后拉伸元素以填满全部宽度或高度。它也支持让一个元素填充其他已停靠元素没有占用的剩余空间。

包含在DockPanel中的元素, 具备DockPanel.Dock的4个枚举值 (Top/Left/Right/Bottom) 用于设置元素的锚定位置
LastChildFill : 容器中的最后一个元素时, 默认该元素填充DockPanel所有空间, 默认值为True;
DockPanel中的元素未显示添加DockPanel.Dock属性时, 系统则会默认为 DockPanel.Dock=“Left”。

最后一个按钮未设置宽度,则填充剩余所有空间;如下:

<Grid><DockPanel><Button Content="左" DockPanel.Dock="Left" Width="100"></Button><Button Content="中" DockPanel.Dock="Left" Width="100"></Button><Button Content="右" DockPanel.Dock="Right"></Button></DockPanel></Grid>

在这里插入图片描述

最后一个按钮设置了宽度,但是无法靠右,因为默认填充剩余所有空间,居中显示;也可以再单独对它设置HorizontalAlignment="Right"来靠右;如下:

<Grid><DockPanel><Button Content="左" DockPanel.Dock="Left" Width="100"></Button><Button Content="中" DockPanel.Dock="Left" Width="100"></Button><Button Content="右" DockPanel.Dock="Right" Width="100"></Button></DockPanel></Grid>

在这里插入图片描述

也可以设置LastChildFill=“False”,可以取消最后一个控件填充剩余所有空间,达到自动靠右;如下:

<Grid><DockPanel LastChildFill="False"><Button Content="左" DockPanel.Dock="Left" Width="100"></Button><Button Content="中" DockPanel.Dock="Left" Width="100"></Button><Button Content="右" DockPanel.Dock="Right" Width="100"></Button></DockPanel></Grid>

在这里插入图片描述

例如:

<Grid Width="400" Height="40" Background="#E8F6F0"><DockPanel LastChildFill="False"><StackPanel Orientation="Horizontal" DockPanel.Dock="Left"><Image Width="30" Height="30" Source="Imgs/001.png" Margin="10 0 0 0"/><TextBlock Text="产品信息" FontSize="16" VerticalAlignment="Center" Margin="10 0 0 0"/></StackPanel><TextBlock Text="202/03/06" FontSize="22" Foreground="#8f8f8f" Margin="0 0 10 0" VerticalAlignment="Center" DockPanel.Dock="Right"/></DockPanel></Grid>

在这里插入图片描述

相关文章:

WPF WrapPanel、UniformGrid、DockPanel介绍

WPF WrapPanel、UniformGrid、DockPanel介绍 WrapPanel WrapPanel , 具有在有限的容器范围内, 可以自动换行, 或者换列处理。具体则取决于WrapPanel的排列方式 (Orientation)。 Orientation"Horizontal"时各控件从左至右罗列&#xff0c;当面板长度不够时&#xff…...

华为OD机试题 - TLV 编码(JavaScript)| 含思路

华为OD机试题 最近更新的博客使用说明本篇题解:TLV 编码题目输入输出描述示例一输入输出说明Code解题思路华为OD其它语言版本最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流…...

【华为OD机试真题java、python、c++】开心消消乐【2022 Q4 100分】(100%通过)

代码请进行一定修改后使用,本代码保证100%通过率。本文章提供java、python、c++三种代码 题目描述 给定一个N行M列的二维矩阵,矩阵中每个位置的数字取值为0或1。矩阵示例如: 1100 0001 0011 1111 现需要将矩阵中所有的1进行反转为0,规则如下: 1) 当点击一个1时,该1便被…...

IDEA搭建vue-cli | vue-router | 排错思路、Webpack、Axios、周期、路由、异步、重定向

&#x1f497;wei_shuo的个人主页 &#x1f4ab;wei_shuo的学习社区 &#x1f310;Hello World &#xff01; Vue.js概述 Vue 是一套用于构建用户界面的渐进式JavaScript框架。 与其它大型框架不同的是&#xff0c;Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层…...

HashSet原理

HashSet原理HashSet原理1.概述2.底层代码3.原理图解4.总结4.1: 1.7原理总结4.2: 1.8原理总结HashSet原理 1.概述 ​ HashSet 实现 Set 接口&#xff0c;由哈希表&#xff08;实际上是一个 HashMap 实例&#xff09;支持。它不保证 set 的 迭代顺序&#xff1b;特别是它不保证…...

【C#进阶】C# 特性

序号系列文章10【C#基础】C# 正则表达式11【C#基础】C# 预处理器指令12【C#基础】C# 文件与IO文章目录前言1&#xff0c;特性的概念1.1 特性的属性1.2 特性的用途2&#xff0c;特性的定义2.1 特性参数2.2 特性目标3&#xff0c;预定义特性3.1 AttributeUsage3.2 Conditional3.2…...

Java速成篇-Day01笔记

提示&#xff1a;这里只记录我个人不熟悉的知识&#xff0c;并非所有内容 笔记目录课程&#xff1a;04-第一行代码① jshell② 对象.方法课程&#xff1a;05-第一份源码① Java开发程序的流程② 入口方法课程&#xff1a;06-常见问题-中文乱码① 乱码原因② 解决方法课程&#…...

从源码开始精通spring-security1

参考b站up主&#xff1a;传送门 前沿: 本章&#xff1a;spring-security 重要的成员 WebSecurity、HttpSecurity、SecurityBuilder、SecurityFilterChain、FilterChainProxy 重点&#xff1a;WebSecurity、HttpSecurity 他们都实现了 SecurityBuilder 接口 用来构建对象 WebSe…...

你应该优化的JavaScript代码,以及前端工程师日常使用的小技巧。使之更加简洁,可读性更强,更易维护。

本文主要是分享一下平时前端工程师&#xff0c;在写前端代码过程中的一些代码优化&#xff0c;以及使用的一些小技巧&#xff0c;来使我们的代码更加简洁&#xff0c;可读性更强&#xff0c;更易维护。 1. 字符串的自动匹配&#xff08;includes的优化&#xff09; includes是…...

自动化测试

文章目录前言一、什么是自动化测试&#xff1f;一个简单的自动化实例二、自动化测试的分类1.接口自动化测试2.UI自动化测试&#xff08;界面测试&#xff09;移动端自动化测试web端自动化测试&#xff08;主要学习&#xff09;三、selenium工具1.为什么选择selenium作为web自动…...

leetcode-每日一题-807(中等,数组)

正常情况第一眼看这道题&#xff0c;看懂意思的话很简单就可以解出来。给你一座由 n x n 个街区组成的城市&#xff0c;每个街区都包含一座立方体建筑。给你一个下标从 0 开始的 n x n 整数矩阵 grid &#xff0c;其中 grid[r][c] 表示坐落于 r 行 c 列的建筑物的 高度 。城市的…...

【Linux】Linux项目自动化构建工具make makefile

文章目录1. 背景2.实例3.原理4.项目清理5. 文件属性中的三个时间6. Linux下第一个小程序——进度条6.1 前置知识1&#xff1a;缓冲区6.2前置知识2&#xff1a;回车换行6.3进度条的实现7 Linux下git的”三板斧“1. 背景 一个工程中的源文件不计其数&#xff0c;其按类型、功能、…...

华为OD机试题 - IPv4 地址转换成整数(JavaScript)| 含思路

华为OD机试题 最近更新的博客使用说明本篇题解: IPv4 地址转换成整数题目输入输出示例一输入输出说明示例一输入输出说明Code解题思路华为OD其它语言版本最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | …...

spring整合通用mapper

1.使用通用mapper可以更快速的进行数据库的增删查改操作,加入springboot的管理,常规的SQL都可以复用 2.整合  a)引入依赖 <dependencies><dependency><groupId>tk.mybatis</groupId><artifactId>mapper-spring-boot-starter</artifactId>…...

一天什么时间发抖音浏览量高?5个抖音最佳发布时间段

抖音作为现在一款现象级的软件&#xff0c;已经不知不觉地影响着我们生活的方方面面。那抖音想要被更多人看到&#xff0c;就需要掐准哪些时间活跃数最多&#xff0c;今天就来和大家分享一下一天什么时间发抖音浏览量高&#xff0c;又该如何抓住最佳投放契机呢?一、一天什么时…...

华为OD机试题 - 关联子串(JavaScript)| 含思路

华为OD机试题 最近更新的博客使用说明本篇题解:关联子串题目输入输出示例一输入输出说明示例二输入输出说明Code解题思路华为OD其它语言版本最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典...

【代码随想录训练营】【Day33休息】【Day34】第八章|贪心算法|1005.K次取反后最大化的数组和|134. 加油站|135. 分发糖果

K 次取反后最大化的数组和 题目详细&#xff1a;LeetCode.1005 这道题比较简单&#xff0c;这里直接给出贪心策略&#xff1a; 局部最优解&#xff1a; 按照 负数 > 0 > 正数 的优先级次序&#xff0c;依次对nums中的较小数值进行取反因为负负得正&#xff0c;负值越小…...

<c++> const 常量限定符

文章目录什么是 const 常量限定符const 的初始化const 的默认作用域const 的引用例外情况const 与指针const指针的声明指向 const 的指针const指针指向 const 的 const指针什么是 const 常量限定符 Q&#xff1a;什么是 const 常量限定符&#xff1f; A&#xff1a;const名叫常…...

pytorch实现transformer模型

Transformer是一种强大的神经网络架构&#xff0c;可用于处理序列数据&#xff0c;例如自然语言处理任务。在PyTorch中&#xff0c;可以使用torch.nn.Transformer类轻松实现Transformer模型。 以下是一个简单的Transformer模型实现的示例代码&#xff0c;它将一个输入序列转换为…...

【懒加载数据 Objective-C语言】

一、咱们就开始进行懒加载 1.懒加载发现,每一个字典,是不是就是四个键值对组成的: 1)answer:String,中国合伙人, 2)icon:String,movie_zghhr, 3)title:String,创业励志电影, 4)options:Array,21 items 前三个都是String类型,最后是不是Array类型, 所…...

League Akari:英雄联盟玩家的终极智能工具箱 - 3大核心功能深度解析

League Akari&#xff1a;英雄联盟玩家的终极智能工具箱 - 3大核心功能深度解析 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power &#x1f680;. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 还在为英雄联盟…...

AI+Python 双驱动计量经济学:从多源数据处理到 SCI 论文--多源数据处理、机器学习预测及复杂因果识别全流程实战随机森林模型核心技术

为什么你自学了这么久&#xff0c;还是做不出成果&#xff1f;很多科研人做计量经济学研究&#xff0c;最大的问题不是不够努力&#xff0c;而是没有一套完整的全链条体系&#xff1a;只学了模型操作&#xff0c;却不懂底层理论&#xff0c;换个研究问题、换个数据集就不会做了…...

解决Canal 连接数据库超时问题

根本原因&#xff1a;DNS 反向解析导致超时Caused by: java.net.SocketTimeoutException: Timeout occurred, failed to read total 4 bytes in 5000 milliseconds, actual read only 0 bytesat com.alibaba.otter.canal.parse.driver.mysql.socket.BioSocketChannel.read(BioS…...

ProfControl V8的介绍 阵列生成

作者&#xff1a;刘凌波链接&#xff1a;环野电子, profcontrolhttp://oa.profcontrol.cn/teaching_V8-7926f783c6.html来源&#xff1a;ProfControl阵列生成ProfControl支持基于仿射变换的阵列快速生成方式&#xff0c;ProfControl支持对各种对象进行阵列生产&#xff08;包括…...

MAVLink垂直扩展:Emaxx导航板专用协议库设计与实践

1. 项目概述 mavlink_emaxx 是一个面向 Emaxx 导航板&#xff08;Emaxx Nav Board&#xff09;定制的 MAVLink 协议消息扩展库。该库并非独立协议栈&#xff0c;而是基于标准 MAVLink v2 协议规范构建的一组专用消息定义&#xff08;message definitions&#xff09;与配套 C…...

AI辅助开发:借助快马平台AI模型打造智能openclaw卸载分析工具

最近在整理开发环境时&#xff0c;遇到了一个棘手的问题&#xff1a;如何彻底卸载openclaw这个工具链。作为一个深度集成的开发套件&#xff0c;它会在系统各处留下各种依赖和配置文件。传统的手动卸载方式不仅效率低下&#xff0c;还容易遗漏关键项。于是我开始尝试用AI来优化…...

intv_ai_mk11部署避坑指南:端口映射失败、响应延迟、乱码重复等问题解决方案

intv_ai_mk11部署避坑指南&#xff1a;端口映射失败、响应延迟、乱码重复等问题解决方案 1. 环境准备与快速部署 1.1 系统要求 操作系统&#xff1a;Ubuntu 20.04/22.04 LTSGPU&#xff1a;NVIDIA显卡&#xff08;至少16GB显存&#xff09;内存&#xff1a;32GB以上存储&…...

语言的边界,与软件的命运

. GIF文件结构 相比于 WAV 文件的简单粗暴&#xff0c;GIF 的结构要精密得多&#xff0c;因为它天生是为了网络传输而设计的&#xff08;包含了压缩机制&#xff09;。 当我们用二进制视角观察 GIF 时&#xff0c;它是由一个个 数据块&#xff08;Block&#xff09; 组成的&…...

2024电子数据取证实战:从手机取证到恶意APP逆向分析

1. 手机取证实战入门&#xff1a;从ADB到蓝牙MAC地址追踪 手机取证是电子数据取证中最常见的场景之一。去年我参与处理的一起案件中&#xff0c;嫌疑人通过恶意APP窃取了受害者通讯录&#xff0c;当时就是通过ADB连接记录锁定了关键证据。先说说ADB这个基础但极其重要的工具。 …...

告别手动爆肝:用AiScan-N自动化你的CTF Web漏洞测试(SQL注入/文件上传实战)

智能渗透测试革命&#xff1a;AiScan-N在CTF中的实战应用与效率跃升 当凌晨三点的CTF比赛进入白热化阶段&#xff0c;你的眼皮开始打架&#xff0c;而对手却像永动机般不断提交flag——这种场景下&#xff0c;传统手动渗透测试的局限性暴露无遗。我曾亲眼见证一位资深红队成员…...