WPF 和 Avalonia 开发者的 html css 前端指南 StackPanel 篇

news/2025/3/26 7:38:28/文章来源:https://www.cnblogs.com/fanbal/p/18785076

WPF 和 Avalonia 开发者的 html css 前端指南 StackPanel 篇

笔者前端框架使用的是 Vue3 + Deno。
笔者主要会以 Avalonia 作为 C# 技术部分的示例。
本文主要是向大家列出 WPF 和 Avalonia 的 StackPanel 在 html 和 css 的实现方法。
你其实也完全可以使用纯原生的 html+css,或者是 React、Blazor 等等框架来实现,因为本质是 html + css。

一、StackPanel 的创建

在 WPF 和 Avalonia 中,你可以使用下面的写法创建一个堆叠的样式:

<StackPanel HorizontalAlignment="Center" VerticalAlignment="Center"><TextBlock Text="hello avalonia AAA!" /><TextBlock Text="hello avalonia BBB!" /><TextBlock Text="hello avalonia CCC!" /><TextBlock Text="hello avalonia DDD!" /><TextBlock Text="hello avalonia EEE!" /><TextBlock Text="hello avalonia FFF!" />
</StackPanel>

而像这样的布局在 html css 中其实是最为基础的内容:

<template><div class="stack-panel"><span class="stack-panel-child">hello html + css AAA!</span><span class="stack-panel-child">hello html + css BBB!</span><span class="stack-panel-child">hello html + css CCC!</span><span class="stack-panel-child">hello html + css DDD!</span><span class="stack-panel-child">hello html + css EEE!</span><span class="stack-panel-child">hello html + css FFF!</span></div>
</template><style lang="css" scoped>.stack-panel {display: block;}.stack-panel-child {display: block;}
</style>

二、StackPanel 纵向排列中的水平对齐

在 WPF 和 Avalonia 中的对齐我们在 Grid 中有进行介绍,我们来提供一个示例效果,其中 StackPanel 的前三项分别是左对齐、居中和右对齐。

图片:

代码:

<StackPanelWidth="200"HorizontalAlignment="Center"VerticalAlignment="Center"Background="Aqua"><TextBlock HorizontalAlignment="Left" Text="hello avalonia AAA!" /><TextBlock HorizontalAlignment="Center" Text="hello avalonia BBB!" /><TextBlock HorizontalAlignment="Right" Text="hello avalonia CCC!" /><TextBlock Text="hello avalonia DDD!" /><TextBlock Text="hello avalonia EEE!" /><TextBlock Text="hello avalonia FFF!" />
</StackPanel>

实际上在 html css 中,也是有一一对应关系的,只是样式默认的状态可能不一样,这个需要在统一样式的时候进行配置了。

页面的样式呈现:

vue 版本的 html css 代码是这样的:

<template><div class="stack-panel"><span class="stack-panel-child horizontal-alignment-left">hello html + css AAA!</span><span class="stack-panel-child horizontal-alignment-center">hello html + css BBB!</span><span class="stack-panel-child horizontal-alignment-right">hello html + css CCC!</span><span class="stack-panel-child">hello html + css DDD!</span><span class="stack-panel-child">hello html + css EEE!</span><span class="stack-panel-child">hello html + css FFF!</span></div>
</template><style lang="css" scoped>.stack-panel {display: block;width: 200px;background: aqua;}.stack-panel-child {display: block;}.horizontal-alignment-left {justify-self: self-start;}.horizontal-alignment-center {justify-self: center;}.horizontal-alignment-right {justify-self: self-end;}
</style>

三、StackPanel 水平排列朝向的实现 Orientation Horizontal

WPF 和 Avalonia 中的水平排列可以用来实现很多效果,毕竟是横着排列,用来做菜单按钮也好,用来显示提示条也好,总之实现的方式很灵活。

你可以看到示例图中,水平排列的 "AAA!"、"BBB!"...

代码参考此处:

<StackPanelHorizontalAlignment="Center"VerticalAlignment="Center"Orientation="Horizontal"><TextBlock Text="AAA!" /><TextBlock Text="BBB!" /><TextBlock Text="CCC!" /><TextBlock Text="DDD!" /><TextBlock Text="EEE!" /><TextBlock Text="FFF!" />
</StackPanel>

在 html css 中,需要将子成员的排列方式作出一些调整。

在 css 中请注意看 stack-panel-child 选择器的display: inline-block; 属性的设置,将其改为行块。

<template><div class="stack-panel"><span class="stack-panel-child">AAA!</span><span class="stack-panel-child">BBB!</span><span class="stack-panel-child">CCC!</span><span class="stack-panel-child">DDD!</span><span class="stack-panel-child">EEE!</span><span class="stack-panel-child">FFF!</span></div>
</template><style lang="css" scoped>.stack-panel {display: flex;}.stack-panel-child {display: inline-block;}
</style>

四、StackPanel 水平排列中的竖直对齐

在 WPF 和 Avalonia 中,我们可以使用 VerticalAlignment 进行竖直对齐的控制。

具体的代码可以参考此处:

<StackPanelHeight="150"HorizontalAlignment="Center"VerticalAlignment="Center"Background="Aqua"Orientation="Horizontal"><TextBlock VerticalAlignment="Top" Text="AAA!" /><TextBlock VerticalAlignment="Center" Text="BBB!" /><TextBlock VerticalAlignment="Bottom" Text="CCC!" /><TextBlock Text="DDD!" /><TextBlock Text="EEE!" /><TextBlock Text="FFF!" />
</StackPanel>

在 html css 中,我们可以使用 align-self 对子成员进行设置。

请看代码:

<template><div class="stack-panel"><span class="stack-panel-child vertical-alignment-top">AAA!</span><span class="stack-panel-child vertical-alignment-center">BBB!</span><span class="stack-panel-child vertical-alignment-bottom">CCC!</span><span class="stack-panel-child">DDD!</span><span class="stack-panel-child">EEE!</span><span class="stack-panel-child">FFF!</span></div>
</template><style lang="css" scoped>.stack-panel {display: flex;background: aqua;height: 150px;}.stack-panel-child {display: inline-block;}.vertical-alignment-top {align-self: flex-start;}.vertical-alignment-center {align-self: center;}.vertical-alignment-bottom {align-self: flex-end;}
</style>

五、总结

WPF 和 Avalonia html + css 备注
Orientation="Vertical" .stack-panel { display: block;} + .stack-panel-child { display: block; }
Orientation="Horizontal" .stack-panel { display: flex; } + .stack-panel-child { display: inline-block; } 使用到了 flex
HorizontalAlignment="Left" justify-self: self-start 水平、左对齐
HorizontalAlignment="Right" justify-self: self-end 水平、右对齐
HorizontalAlignment="Center" justify-self: center 水平、居中
VerticalAlignment="Top" align-self: self-start 竖直、顶对齐
VerticalAlignment="Bottom" align-self: self-end 竖直、底对齐
VerticalAlignment="Center" align-self: center 竖直、居中

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

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

相关文章

维修松下机器人G3示教器通电不显示的问题

示教器作为一种先进的工具,被广泛应用于机器人的控制编程中,它不仅能够定义机器人的具体行为和任务,还能实时地监测到机器人的多种状态信息,诸如位置、速度以及负载等关键数据。一旦遇到紧急情况,示教器能够迅速执行急停操作,从而确保整个系统的安全无虞。当面对松下焊接…

第一组可行性分析

第1章 系统分析 1.1 可行性分析 本项目“电磨房——智能家居配置系统”是一款基于微信小程序的家庭用电管理工具,旨在通过智能化手段帮助用户优化用电策略、降低电费支出。以下从技术、经济、社会和法律四个维度分析其可行性。 1.1.1 技术可行性分析 团队具备全栈开发能力:前…

1.A+B问题

用Scanner容器来接受键盘录入数字的情况 因为这题不止一次录入 用while循环 不用for循环 因为只要键盘录入就一直循环 不知道循环多少次 while(scan.hasNextInt)用来判断键盘是否有下一个数字录入 总后sout输出就好了

CH182F7与LAN8720A对比

1、CH182简介 CH182是一款支持Auto-MDIX的工业级10/100M以太网PHY收发器。CH182内部包括物理编码子层(PCS)、物理介质接入层(PMA)、双绞线物理介质相关子层(TP-PMD)、10BASE-TX编码器/解码器、双绞线介质连接单元(TPMAU)、MII和RMII接口等以太网Transceiver功能所需的模…

一键将文件转成网页

1、使用工具trae,需要魔法。 提示词(来自于向阳乔木,微微改动):你是一名专业的网页设计师和前端开发专家,对现代 Web 设计趋势和最佳实践有深入理解,尤其擅长创造具有极高审美价值的用户界面。你的设计作品不仅功能完备,而且在视觉上令人惊叹,能够给用户带来强烈的&qu…

『Plotly实战指南』--柱状图绘制基础篇

柱状图作为最基础的数据可视化形式之一,能直观展示不同类别数据的对比关系,适用于一下的场景:比较不同类别之间的数据大小,如不同产品的销售额对比。 展示数据的分布情况,如各年龄段的人口数量分布。 分析时间序列数据的变化趋势,如某公司近几年的利润变化。今天,我们就…

【作业3】

黄鹏翔 3123004229 黄皓维 3123004228仓库地址 地址这个作业的要求 结对项目这个作业的目标 了解双人合作项目的方法,并完成此次项目PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)Planning 计划 30 35Estimate 这个任务需要的时间 25 30Develop…

ASE11N45-ASEMI智能家居专用ASE11N45

ASE11N45-ASEMI智能家居专用ASE11N45编辑:ll ASE11N45-ASEMI智能家居专用ASE11N45 型号:ASE11N45 品牌:ASEMI 封装:TO-252 批号:最新 最大漏源电流:11A 漏源击穿电压:450V RDS(ON)Max:0.39Ω 引脚数量:3 沟道类型:N沟道MOS管、中低压MOS管 漏电流:ua 特性:N沟道M…

sql 保留两位小数并强制向前进位的方法

使用CEILING函数 CEILING函数会返回大于或等于指定数值的最小整数值 例如,保留两位小数:select CEILING(0.0132*100)/100输出结果 这里,我们将数字乘以100(因为我们想保留两位小数),使用CEILING函数确保向上进位,然后再除以100以恢复原来的数值范围。

可行性分析[3]

第1章 系统分析 1.1 可行性分析 1.1.1 技术可行性分析 1.1.2 经济可行性分析 1.1.3 社会可行性分析 1.1.4 法律可行性分析 1.2 系统流程分析 1.2.1 系统开发总流程 1.2.2 登录流程 1.2.3 系统操作流程 1.2.4 系统性能分析 第1章 可行性分析 1.1可行性分析 随着生活水平的提高,…

PLM项目管理软件的未来:自动化与智能化的发展方向

PLM(产品生命周期管理)项目管理软件在现代企业的产品研发、生产与运营过程中扮演着至关重要的角色。它整合了从产品概念设计到退役处理的全流程信息,助力企业提升效率、降低成本并提高产品质量。随着科技的飞速发展,自动化与智能化成为 PLM 项目管理软件未来的核心发展方向…

研发效率提升30%的秘诀:PLM系统需求管理的6步工作法

在企业的研发过程中,提升效率是一个永恒的追求。研发效率的高低,直接影响着产品推向市场的速度,进而决定企业在竞争中的地位。而在众多影响研发效率的因素中,需求管理无疑是关键一环。PLM(产品生命周期管理)系统作为整合产品全生命周期信息的重要工具,其需求管理功能若能…