第3章-布局

news/2025/2/12 3:10:46/文章来源:https://www.cnblogs.com/myshiqiqi/p/18707285

container: 容器

🔥 理想的 WPF 窗口需要遵循以下几条重要原则

❌ 以硬编码方式设定尺寸和位置是极其不当的处理方式,因为这会限制本地化界面的能力,并且会使界面更难处理动态内容。

  • 不应显式设定元素(如控件)的尺寸。 例如,当添加更多的文本时按钮应当能够扩展。可通过设置最大和最小尺寸来限制可以接受的控件尺寸范围。
  • 不应使用屏幕坐标指定元素的位置。 元素应当由它们的窗口根据它们的尺寸、顺序及(可选的)其他特定于具体布局容器的信息进行排列。如果需要在元素之间添加空白空间,可使用 Margin 属性。
  • 布局窗口的子元素”共享“可用的空间。 如果空间允许,布局容器会根据每个元素的内容尽可能为元素设置更合理的尺寸。它们还会向一个或多个子元素分配多余的空间。
  • 可嵌套的布局容器。 典型的用户界面使用 Grid 面板作为开始,Grid 面板是 WPF 中功能最强大的容器,Grid 面板可包含其他布局容器,包含的这些容器以更小的分组排列元素,比如带有标题的文本框、列表框中的项、工具栏上的图标以及一列按钮等。

布局过程

WPF 布局报矿两个阶段:测量(measure)阶段和排列(arrange)阶段。

👀 ScrollViewer 控件提供滚动支持。

布局容器

所有的布局容器都继承自 System.Windows.Controls.Panel 抽象类的面板。

Panel 的三个共有属性:

  • Background:背景色
  • Children:面板中存储的条目集合
  • IsItemsHost:该属性是一个布尔值,如果面板用于显示与 ItemsControl 控件关联的项,该属性值为 true.

💡 如果需要创建自定义容器(自定义的布局方式),就需要重写继承自 FrameworkElement 类的 MeasureOverride() 和 ArrangeOverride()方法。

核心布局面板
  • StackPanel
  • WarpPanel
  • DockPanel:LastChildFill="True"
  • Grid:ShowGridLines="True"、UseLayoutRounding="True" 布局舍入、GridSplitter 分割条、Grid.IsShareSizeScope="True" 共享尺寸组
  • UniformGrid
  • Canvas

💡 关于布局舍入

应设置为UseLayoutRoundingtrue根元素。 布局系统将子坐标添加到父坐标;因此,如果父坐标不在像素边界上,则子坐标也不在像素边界上。 如果 UseLayoutRounding 不能在根目录设置,请在子级上设置 SnapsToDevicePixels 以获取所需的效果。

参考自:
FrameworkElement.UseLayoutRounding 属性 (System.Windows) | Microsoft Learn
UIElement.SnapsToDevicePixels 属性 (System.Windows) | Microsoft Learn

UIElement.UseLayoutRounding 属性
获取或设置一个值,该值确定对象及其可视化子树的呈现是否应使用将呈现与整像素对齐的舍入行为。
(一般在容器元素上设置, 发生在Measure&Arrange期间)

UIElement.SnapsToDevicePixels 属性
获取或设置一个值,该值决定呈现元素期间是否应使用设备特定的像素设置。这是一个依赖项属性。
(一般在根元素设置, 发生在Render, 不是容器元素)

其他的起到辅助布局的元素:

  • 💡ViewBox
  • Border:Background、BorderBrush、BorderThickness、CornerRadius、Padding
  • TabPanel
  • ToolbarPanel
  • ToolbarOverflowPanel
  • ❓VirtualizingStackPanel
  • InkCanvas
  • ❓Expander
常用的布局属性
  • HorizontalAlignment: Center、Left、Right或Stretch
  • VerticalAlignment
  • Margin
  • MinWidth 和 MinHeight
  • MaxWidth 和 MaxHeight
  • Width 和 Height

ActualHeight 和 ActualWidth 指的是元素实际的尺寸,而不是定义的尺寸

💡 自动改变尺寸的窗口
Window.SizeToCentent: 可设定的值有 WindthAndHeight、Width、Height

GridSplitter 分割条

特殊属性说明:

  • ShowsPreview="True",如果为fase,在拖动的时候会实时的显示分割栏大小,如果为true时,则会显示一个灰色的阴影,在松开鼠标时都会进行分割大小。
  • DragIncrement: 分割移动时的幅度值。

Z顺序

Canvas.ZIndex、Panel.ZIndex

InkCanvas

支持画线、选中、手势等功能。具体可查官方文档。

Visibility

  • Visible 显示
  • Collapsed 元素不显示,也不占用任何空间
  • Hidden 元素不显示,但保留空间。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/881582.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI图像识别摄像机

AI图像识别摄像机是一种集成了先进算法和深度学习模型的智能监控设备。这些摄像机不仅能够捕捉视频画面,还能实时分析和处理所拍摄的内容,从而实现对特定对象、场景或行为的自动识别与分类。例如,它们可以区分行人、车辆、动物等不同目标,并且可以检测到异常行为,如打斗、…

客流智能识别摄像机

客流智能识别摄像机广泛应用于多个行业,包括零售业、交通运输、旅游景点以及智慧城市建设等。在零售业中,它们可以帮助商家了解顾客行为,从而优化商品陈列和营销策略;在交通运输领域,该设备可用于监控车站或机场的人流量,以合理安排运力;在旅游景点,通过对游客人数的实…

2025年,Fantastic-admin 这款后台框架将继续引领潮流

前言 大言不惭的取了这个标题,但作为开发了 4 年多的 Fantastic-admin 的作者,回顾这一路走来,从一开始被指责抄袭,到现在拥有数百名付费用户和几十家付费企业。我认为我的开发理念应该是得到了大众的认可。 所以趁着 Fantastic-admin 发布 v5.0 之际,借由这篇文章回顾一下…

“APS+”高级计划排程产品架构设计与功能分析

过去,企业以ERP数据或MRP数据为基石手动计划排程,在生产计划建议上无法实现高精准的交期预测、高效的资源调度管理。现在,企业在信息化的基础上集成APS高级计划排程,以助于其缩短订单生产周期、提高工作效率、降低库存成本,从而在战略上帮助企业实现供应链全流程产销协同一…

【技术文章】PostgreSQL分区表详细步骤

一、PostgreSQL分区表实现逻辑 1.1. 分区类型详解 PostgreSQL支持两种主要的分区类型: • 范围分区(Range Partitioning) 根据表中某一列的值范围将表分割成若干个分区。例如,我们可以按照时间字段(如日期)创建按年、季度或月份的范围分区。• 列表分区(List Partitioni…

某音逆向-纯算(一)

1 还是使用XHR定位(以抖音评论为例)2 添加日志断点清空控制台,禁用断点,放开断点。 启用断点后 点击打开二级评论,查看生成的日志3 加减乘数算法日志点 监测栈v[p]的变化,包括加减乘除,取余,位运算等运算参数和结果来推算加密算法。a_b参数是由其他参数加密而来,看到参…

本地一键运行大模型神器Ollama + DeepSeek R1尝鲜指南

本地一键运行大模型神器Ollama + DeepSeek R1尝鲜指南 作为AI领域的弄潮儿,你是否苦恼于云端大模型API的高昂成本?想在本机零门槛体验顶尖开源模型?这篇保姆级教程将带你解锁「Ollama+DeepSeek R1」黄金组合,文末附程序员专属玩法彩蛋! 一、Ollama:程序员的本地大模型…

吸烟识别摄像头

吸烟识别摄像头具备24小时不间断监测能力,可以随时发现违规吸烟行为。一旦检测到有人吸烟,系统会立即发出警报或通知管理人员。该系统能够自动生成统计报告,包括每日或每月的违规次数、时间分布以及常见地点等信息。这些数据为决策者提供了重要依据,有助于优化禁烟措施和宣…

社区垃圾分类识别AI算法盒

社区垃圾分类识别AI算法盒在社区垃圾投放站安装后,社区垃圾分类识别AI算法盒便能实时监测垃圾投放情况。当居民前来扔垃圾时,算法盒一旦检测到错误投放的垃圾,例如将可回收物扔进了其他垃圾桶,或者厨余垃圾没有破袋直接扔进垃圾桶等情况,它会立即启动语音提醒功能,清晰地…

在校大学生兼职新选择:轻松陪伴,日结!小乔陪玩平台兼职做陪玩达人(正规纯绿)请不要用异样的眼光看待新型事物

大学生兼职,玩伴兼职,小乔陪玩平台接单,兼职陪用户,看电影,逛街,吃饭.作为一名在校大学生,你是否曾经为生活费发愁?是否想过利用课余时间赚取一些零花钱,但又不想被繁琐的工作束缚?现在,机会来了!一种全新的兼职方式正在悄然兴起,它不仅轻松有趣,还能让你在享受生活的同…

这或许是全网最全的 DeepSeek 使用指南,95% 的人都不知道的使用技巧(建议收藏)

2025年春节过的好快,转眼间,大家又回到了各自工作岗位了,要说这个春节,什么最火,肯定绕不开DeepSeek。 几乎一夜之间,所有人都在关注DeepSeek,甚至我在老家,完全没用过AI的七大姑八大姨,都在问我,DeepSeek是什么,怎么用。 今天就来聊一聊DeepSeek,话不多说,开始。…

hot100-腐烂的橘子

思路 每个腐烂橘子向四周感染一次,直到没有新鲜橘子所需的最少时间。其中一定设计图的遍历,那么是DFS还是BFS?因为要求一层层感染完的最少时间,所以用BFS。即把腐烂橘子放入队列,每次感染一波出队,再把新感染的入队,直到所有腐烂橘子都向四周感染过一次。 为了判断是否有…