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

WPF学习(5)- Border控件(边框布局)+GridSplitter分割窗口

严格来说,Border并不是一个布局控件,因为它并不是Panel的子类,而是Decorator装饰器的子类,而Decorator继承于FrameworkElement。我们要先看看它的父类Decorator。

public class Decorator : FrameworkElement, IAddChild
{public Decorator();public virtual UIElement Child { get; set; }protected override int VisualChildrenCount { get; }protected internal override IEnumerator LogicalChildren { get; }protected override Size ArrangeOverride(Size arrangeSize);protected override Visual GetVisualChild(int index);protected override Size MeasureOverride(Size constraint);}

Decorator 装饰器只有一个Child 属性,说明Decorator只能容纳一个子元素(UIElement),也就是Border只能容纳一个子元素。

再看看Border的结构定义:

public class Border : Decorator
{public static readonly DependencyProperty BorderThicknessProperty;public static readonly DependencyProperty PaddingProperty;public static readonly DependencyProperty CornerRadiusProperty;public static readonly DependencyProperty BorderBrushProperty;public static readonly DependencyProperty BackgroundProperty;public Border();public Thickness BorderThickness { get; set; }public Thickness Padding { get; set; }public CornerRadius CornerRadius { get; set; }public Brush BorderBrush { get; set; }public Brush Background { get; set; }protected override Size ArrangeOverride(Size finalSize);protected override Size MeasureOverride(Size constraint);protected override void OnRender(DrawingContext dc);}
  • BorderThickness:设置Border边框的厚度(像素宽度)。
  • Padding:设置子元素相对于Border边框的距离。
  • CornerRadius:设置Border的圆角。
  • BorderBrush:设置Border边框的颜色画刷。
  • Background:设置Border的背景颜色画刷。

正是因为Border有这么多实用的属性, 所以, 我们通常在布局界面时,Border(装饰器)控件是首选。

    <WrapPanel Margin="10"><Border Height="35" Margin="10" Padding="5" BorderThickness="1" BorderBrush="Gray"><TextBlock  Text="矩形 - Border控件" Margin="5" /></Border><Border Height="35" Margin="10" Padding="5" BorderThickness="1" BorderBrush="Gray" CornerRadius="20"><TextBlock  Text="椭圆 - Border控件" Margin="5" /></Border><Border Width="150" Height="150" Margin="10" Padding="5" BorderThickness="1" Background="Red" BorderBrush="Gray" CornerRadius="75"><TextBlock  Text="圆形Border控件" Margin="5" HorizontalAlignment="Center" FontSize="16" FontWeight="Bold" VerticalAlignment="Center" Foreground="White"/></Border></WrapPanel>

在这里插入图片描述
我们分别写了3个Border,第一个Border被设计成矩形,第二个Border增加了圆角属性,第三个Border通过CornerRadius属性,将值设置为宽度或高度的一半,就形成了一个正圆。

GridSplitter分割窗口

GridSplitter控件用来分割窗体的布局,必须放在Grid栅格控件中配合使用,通过鼠标按住GridSplitter进行左右或上下拖动,即可调整行列尺寸。

注意:

  1. 如果你希望GridSplitter控件可以水平调整左右的Grid列宽时,那么HorizontalAlignment属性必须设置为Stretch或者Center。
  2. 如果你希望GridSplitter控件可以垂直调整行高,那么VerticalAlignment属性必须设置为Stretch或者Center。
  3. ShowsPreview属性表示拖动时是否及时绘制调整尺寸。
    <Grid><Grid.ColumnDefinitions><ColumnDefinition/><ColumnDefinition Width="auto"/><ColumnDefinition/></Grid.ColumnDefinitions><Border Grid.Column="0" Background="LightBlue"><TextBlock TextWrapping="Wrap" Padding="10" LineHeight="20">1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111</TextBlock></Border><GridSplitter Grid.Column="1" Width="5" HorizontalAlignment="Center"   ShowsPreview="False"/><Border Grid.Column="2" Background="LightCoral"><TextBlock TextWrapping="Wrap" Padding="10" LineHeight="20">222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222</TextBlock></Border></Grid>

最好是为GridSplitter单独分配一行或者一列,同时,GridSplitter需要跨越整行或整列,这样的效果会更好。

如上面的代码所示,我们在Grid中分割了3个单元格(3列),将GridSplitter居在放置,简单设置一下GridSplitter的属性,就可以达到我们的目的了。

相关文章:

WPF学习(5)- Border控件(边框布局)+GridSplitter分割窗口

严格来说&#xff0c;Border并不是一个布局控件&#xff0c;因为它并不是Panel的子类&#xff0c;而是Decorator装饰器的子类&#xff0c;而Decorator继承于FrameworkElement。我们要先看看它的父类Decorator。 public class Decorator : FrameworkElement, IAddChild {public…...

ADAS芯片及方案

一 ADAS芯片及方案 1.1 高通SA8775P Snapdragon Ride Flex&#xff08;SA8775P&#xff09;舱驾融合平台可通过单颗SoC同时支持数字座舱和智能驾驶功能&#xff0c;在CPU、GPU、NPU的处理能力方面具备强大的性能表现与领先优势&#xff0c;支持实现复杂的智能座舱功能&#x…...

5 mysql 查询语句

1.DML&#xff1a;对数据进行增删改查 提示&#xff1a;Execute执行 Execute and Suppress 执行并且抑制这个警告 person表的结构 /* DML:Data Manipulation Language 数据操作语言&#xff0c;对数据进行 增删改查操作&#xff0c;因为査询的操作太频繁和复杂&#xff0c;将…...

从网络上下载并展示图像数据

一、代码 from PIL import Image import requests from io import BytesIO import matplotlib.pyplot as pltimage_url "https://www.alleycat.org/wp-content/uploads/2019/03/FELV-cat.jpg" response requests.get(image_url) # response.content 获取 HTTP 响…...

Machine-Learning 机器学习

目录 基本概念与分类 工作原理 应用领域 发展趋势 机器学习中的深度学习是如何工作的&#xff0c;以及它如何影响其他机器学习算法&#xff1f; 在机器学习中&#xff0c;哪些特定的数据预处理技术最有效&#xff0c;特别是在处理大规模数据集时&#xff1f; 强化学习在…...

CSP 2023 普及组第一轮 - CSP/S 2023初试题 基础部分解析

第 1 题 在 C 中&#xff0c;下面哪个关键字用于声明一个变量&#xff0c; 其值不能被修改?&#xff08;B) A. unsigned B. const C. static D. mutable 【const声明的变量不可修改】 第 2 题 八进制数 12345670(8) 和 07654321(8) 的和为&#xff08;D&#xff09; A. 222222…...

解锁IPython的跨平台魔法:深入探索%%script命令的神秘力量

IPython 的 %%script 魔法命令是一种强大的工具&#xff0c;它允许你在 IPython 环境中执行外部脚本。这个特性特别适用于需要在 IPython Notebook 中直接与 Web 技术交互的场景。下面我将为你详细介绍 %%script 命令的使用方法&#xff0c;并通过代码示例展示其强大功能。 一…...

如何避免项目发布后用户从浏览器WebPack中看到源码

打包前在config->index.js中设置productionSourceMap为false productionSourceMap: false,...

java学习19VUE

VUE NPM npm的全称是Node Package Manager 中文名为Node.js包管理器&#xff0c;是一个NodeJS包管理和分发工具&#xff0c;已经成为了非官方的发布Node模块(包)的标准。NPM可以方便地从一个全球的代码库中获取并安装Node.js模块&#xff0c;这些模块可以用于构建应用程序、…...

Redis7(四)哨兵、集群

哨兵 吹哨人巡查监控后台master主机是否故障&#xff0c;如果故障了根据投票数自动将某一个从库转换为主库&#xff0c;继续对外服务 哨兵的作用&#xff1a; 监控redis运行状态&#xff0c;包括master和slave当master宕机了&#xff0c;能自动将slave转换为master 哨兵的功能…...

校园课程助手【3】-使用枚举类封装异常优雅处理全局异常

接着2中登录模块补充一个点&#xff1a; //可以看到这里返回给前端控制器的是一个类而不是html页面public RespBean doLogin(Valid LoginVo loginVo, HttpServletRequest request,HttpServletResponse response){return userService.doLogin(loginVo, request, response);}首先…...

LeetCode面试150——58最后一个单词的长度

题目难度&#xff1a;简单 默认优化目标&#xff1a;最小化平均时间复杂度。 Python默认为Python3。 目录 1 题目描述 2 题目解析 3 算法原理及代码实现 3.1 反向遍历 参考文献 1 题目描述 给你一个字符串 s&#xff0c;由若干单词组成&#xff0c;单词前后用一些空格字…...

MySQL——数据库的操作,数据类型,表的操作

MySQL——数据库的操作&#xff0c;数据类型&#xff0c;表的操作 1. 数据库的操作1.1 显示当前数据库1.2 创建数据库舍弃当前所写的SQL语句查看当前数据库服务全局的默认字符集 1.3 使用数据库1.4 查看当前操作的数据库查看MySQL的帮助 1.5 删除数据库 2. 常见数据类型2.1 数值…...

Go 临界资源 安全问题

临界资源安全的问题&#xff1a; 临界资源&#xff1a; 指并发环境中多个 进程/线程/协程 可以共享&#xff08;都可以调用&#xff09;的资源/变量&#xff0c;如果在并发环境中处理不当&#xff0c;就会造成一些 严重、问题 func main() {//临界资源a : 10go func() {a 100f…...

安卓常用控件(上)

文章目录 TextViewButtonEditText TextView textview主要用于在界面上显示一段文本信息。 属性名描述id给当前控件定义一个唯一的标识符。layout_width给控件指定一个宽度。match_parent&#xff1a;控件大小与父布局一样&#xff1b;wrap_content&#xff1a;控件大小刚好够包…...

基于 RabbitMQ 实现延迟消息的订单处理流程

文章目录 订单创建流程1. 商品查询与订单数据初始化2. 总价计算与订单保存3. 扣减库存与购物车清理4. 延迟消息与支付状态检测 订单延迟消息监听器支付成功与订单取消1. 订单支付成功2. 订单取消与库存恢复 总结 在现代电商系统中&#xff0c;订单处理是一个复杂且关键的环节。…...

使用Python将Word文档转换为PNG图片

在这篇博客中&#xff0c;我将介绍一个使用Python编写的小工具&#xff0c;它能够将指定文件夹中的所有Word文档&#xff08;.doc和.docx格式&#xff09;转换为PNG图片。这个工具基于wxPython库构建图形用户界面&#xff0c;并结合了win32com和PyMuPDF库实现文档格式的转换。接…...

Qt创建Json对象时浮点数的精度控制

我们在Qt中使用Json都是使用QJsonDocument、QJsonArray、QJsonObject、QJsonValue等类。 当我们在QJsonObject中插入浮点数字段时&#xff0c;会发现浮点数的小数位数很长&#xff0c;如下所示&#xff1a; #include <QJsonDocument> #include <QJsonArray> #incl…...

【海贼王航海日志:前端技术探索】CSS你了解多少?(二)

目录 1 -> 字体属性 1.1 -> 设置字体 1.2 -> 字体大小 1.3 -> 字体粗细 1.4 -> 文字样式 2 -> 文本属性 2.1 -> 文本颜色 2.1.1 -> 认识RGB 2.1.2 -> 设置文本颜色 2.2 -> 文本对齐 2.3 -> 文本装饰 2.4 -> 文本缩进 2.5 -&g…...

软件测试面试200问(全)

1、你的测试职业发展是什么&#xff1f; 测试经验越多&#xff0c;测试能力越高。所以我的职业发展是需要时间积累的&#xff0c;一步步向着高级测试工程师奔去。而且我也有初步的职业规划&#xff0c;前 3 年积累测试经验&#xff0c;按如何做好测试工程师的要点去要求自己&a…...

产教融合共建失智老年人照护实训室实践路径

本文围绕产教融合模式&#xff0c;结合失智老年人照护岗位实际需求&#xff0c;从合作机制、空间布局、设备配置、教学实施、运营保障五个核心维度&#xff0c;给出可落地的失智老年人照护实训室共建实践路径&#xff0c;兼顾实用性与可操作性&#xff0c;助力院校与企业高效共…...

从人耳听觉到AI:为什么MFCC仍是语音识别的黄金标准?

从人耳听觉到AI&#xff1a;为什么MFCC仍是语音识别的黄金标准&#xff1f; 想象一下&#xff0c;当你走进一个嘈杂的咖啡馆&#xff0c;背景音乐、咖啡机轰鸣、人群交谈声此起彼伏&#xff0c;但你依然能清晰地分辨出朋友对你说的话。这种神奇的听觉能力&#xff0c;正是人类进…...

让 pgAdmin 和 PostgreSQL 运行在同一个 Docker 网络中。

明白了&#xff0c;您希望用 pgAdmin 来管理运行在 Docker 容器里的 PostgreSQL 数据库。最可靠且易于管理的方式是让 pgAdmin 和 PostgreSQL 运行在同一个 Docker 网络中。 下面给您一个最简洁的 Docker Compose 方案&#xff0c;您只需要复制保存、启动&#xff0c;就能通过浏…...

律所主任如何高效监控所里几百个案子的进度

结论律所主任想要高效监控所里几百个案子的进度&#xff0c;纯靠人工询问或 Excel 表格是无法实现的&#xff0c;必须依托数字化管理工具&#xff08;如"案件云"系统&#xff09;。通过建立可视化案件看板、设置关键节点与期限自动化预警&#xff0c;以及实现全所云端…...

从PyTorch到FPGA:手把手教你将MobileNetV2模型部署到Zynq平台(附完整代码)

从PyTorch到FPGA&#xff1a;手把手教你将MobileNetV2模型部署到Zynq平台&#xff08;附完整代码&#xff09; 在边缘计算领域&#xff0c;FPGA因其低延迟、高能效和可重构特性&#xff0c;正成为轻量级CNN模型部署的理想选择。本文将带您完成一个从PyTorch模型训练到Xilinx Zy…...

Python程序员最后的护城河:掌握无GIL环境下的内存序建模、seq_cst原子操作与TSO一致性验证(附GCC/Clang内联汇编对照表)

第一章&#xff1a;Python程序员的无GIL并发觉醒&#xff1a;从CPython锁争用到真正并行的范式跃迁Python开发者长期在CPython解释器下与全局解释器锁&#xff08;GIL&#xff09;共处——它保障了内存管理的安全&#xff0c;却也悄然扼杀了多核CPU上真正的并行计算能力。当I/O…...

2026年高性价比降AI工具:SpeedAI降AIGC率稳过审

2026年AIGC工具已经全面融入各类内容创作场景&#xff0c;降AI率、降AIGC率不再是学术圈的小众需求&#xff0c;更是论文写作、商业文案产出、自媒体内容创作、正式文稿发表等场景的核心刚需。现在市面上降AI工具种类繁多&#xff0c;但真正能做到效果稳定、不改动核心内容、操…...

汇川AM402 PLC控制IS620N伺服:手把手教你封装自己的轴控功能块(附完整工程)

汇川AM402 PLC控制IS620N伺服&#xff1a;从零封装轴控功能块的工程实践 在工业自动化项目中&#xff0c;伺服控制是最基础也最频繁使用的功能之一。想象一下&#xff0c;你正在开发一个包装产线控制系统&#xff0c;需要同时管理十几台伺服电机——每台电机都需要重复编写使能…...

环形粘结钕铁硼磁钢单边壁厚可以做成多薄?

大家都知道粘结钕铁硼因其独特的性能被广泛使用在电机、电器等产品中&#xff0c;小编接触磁铁一年多了&#xff0c;在这期间&#xff0c;有不少客户问道&#xff0c;你们粘结钕铁硼单边壁厚最小可以做成多薄&#xff1f;在介绍这个问题前&#xff0c;首先介绍下什么是“单边壁…...

在昇腾Atlas 800I A2上,用vLLM-Ascend 0.9.1-dev部署Qwen2.5-7B的保姆级避坑指南

昇腾Atlas 800I A2实战&#xff1a;vLLM-Ascend部署Qwen2.5-7B的深度避坑手册 当你在Atlas 800I A2服务器上首次尝试用vLLM-Ascend部署Qwen2.5-7B模型时&#xff0c;可能会遇到各种官方文档未曾提及的"暗礁"。本文将从实战角度&#xff0c;拆解那些让开发者夜不能寐的…...