在Avalonia中使用相对单位
Avalonia目前不具备相对单位功能,要使用相对单位需要安装RelativeControl.Avalonia包
RelativeControl.Avalonia
开始使用
添加NuGet包:
dotnet add package RelativeControl.Avalonia
设置值为 double 属性的相对值:
<CONTROL r:Relative.Width="20pw"/>
这会设定此
Control的宽为20%逻辑父控件宽度。你还可以对相对长度进行加减:
<CONTROL r:Relative.Width="20pw+10ph"/>
这会设定此
Control的宽为20%逻辑父控件宽度+10%逻辑父控件高度。
在code behind中,除了加减,还可以对相对单位进行乘除运算。
- Multiply()和Divide()会改变其自身的倍率,同时影响所有对它的引用。
- * 和 / 运算会生成一个轻量级副本,不会影响原实例。
Relative.SetOneTimeWidth和Relative.SetOneTimeHeight仅在控件附加到视觉树时更新一次。
其它使用RelativeLength/RelativeLengthMerge的属性:
- Relative.Height
- Relative.MinWidth
- Relative.MinHeight
- Relative.MaxWidth
- Relative.MaxHeight
- Relative.SetOneTimeWidth
- Relative.SetOneTimeHeight
设定值为 CornerRadius 属性的相对值:
<CONTROL r:Relative.CornerRadius="10sw 10sw+5sh 10sh-5sw 10sh"/>
这会设定此
Control的圆角为TopLeft = 10% 自身宽度,
TopRight = 10% 自身宽度 + 5% 自身高度,
BottomRight = 10% 自身高度 - 5% 自身宽度,
BottomLeft = 10% 自身高度
设定值为 Thickness 属性的相对值
<CONTROL r:Relative.BorderThickness="1em 2em-5px"/>
这会设定此
Control的值为:Horizontal(Left,Right) = 1倍字宽,
Vertical(Top,Bottom) = 2倍字宽 - 5像素
其它使用RelativeThickness的属性:
- Relative.Margin
- Relative.Padding
为任意属性绑定相对值
<CONTROL PROPERTY="{r:RelativeBinding {Binding SOURCE_PROPERTY},50%}"/>
这会设定此
Property的值为SOURCE_PROPERTY值的50%.一个合法的
SourceProperty的值必须为以下类型:
- double
- 任意可转换为double的类型(如数字字符串)
- 任意继承了
IMulDiv<RelativeScale>或IMulDiv<double>的自定义结构或类.
RelativeBindOneTime只在控件附加到视觉树时更新一次。
在自定义属性中使用相对单位:
StyledProperty:
public static readonly StyledProperty<IRelative<T>> XXXProperty =
AvaloniaProperty.Register<..., IRelative<T>>(nameof(XXX));
DirectProperty:
public static readonly DirectProperty<..., IRelative<T>> XXXProperty =
AvaloniaProperty.RegisterDirect<..., IRelative<T>>(...);
AttachedProperty:
public static readonly AttachedProperty<IRelative<T>> XXXProperty =
AvaloniaProperty.RegisterAttached<...,...,IRelative<T>>(...);
所有单位
绝对单位:
px: 设备无关像素(1/96英寸)
cm: 厘米
mm: 毫米
in: 英寸
相对单位:
tpw: 模板父控件宽度
tph: 模板父控件高度
lpw or pw: 逻辑父控件宽度
lph or ph: 逻辑父控件高度
vpw: 视觉父控件宽度
vph: 视觉父控件高度
sw: 自身宽度
sh: 自身高度
em: 字宽
vw: 窗口宽度
vh: 窗口高度
%: 百分比,仅用于RelativeBinding和RelativeBindOneTime
API最小可用版本
0.0.5
- Width
- Height
- MinWidth
- MinHeight
- MaxWidth
- MaxHeight
- BorderThickness
- CornerRadius
0.1.0
- Margin
- Padding
1.0.0-alpha
- RelativeBinding
支持相对属性绑定 如何绑定自定义属性?
1.0.0-beta
- SetOneTimeWidth
- SetOneTimeHeight
- RelativeBindOneTime
这些属性仅会在自身控件附加到视觉树时更新一次
在Avalonia中使用相对单位的更多相关文章
- CSS3中的rem单位
一.rem介绍 rem是什么? 它的全称是 font size of the root element (根元素的字体大小) 它是CSS3中新增加的一个尺寸(度量)单位,根节点(html)的font- ...
- [安卓基础] 008.Android中的显示单位
*:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...
- css中的各种单位简述以及ios10下safari禁止缩放的问题
px:绝对单位,页面按精确像素展示 em:相对单位,基准点为父节点字体的大小,如果自身定义了font-size按自身来计算(浏览器默认字体是16px),整个页面内1em不是一个固定的值. rem:相对 ...
- Android中的各种单位
px(像素):屏幕上的点.in(英寸):长度单位.mm(毫米):长度单位.pt(磅):1/72英寸.dp(与密度无关的像素):一种基于屏幕密度的抽象单位.在每英寸160点的显示器上,1dp = 1px ...
- android中的屏幕单位介绍
1.px (pixels)(像素):是屏幕的物理像素点,与密度相关,密度大了,单位面积上的px 会比较多.通常不推荐使用这个. 2.dip 或dp(与密度无关的像素):一个基于density(密度)的 ...
- 关于webapp中的文字单位的一些捣腾
前言 文字是网页内容的一枚大将,我们无时无刻都在看着它,只要是你盯屏幕上的任何一个地方都会有文字.地铁上无时无刻都在盯着屏幕上的人对于文字更为敏感,太大不行,太小TN又看不清上面到底在说什么,有时候车 ...
- CSS中的尺寸单位
绝对单位 px: Pixel 像素 pt: Points 磅 pc: Picas 派卡 in: Inches 英寸 mm: Millimeter 毫米 cm: Centimeter 厘米 q: Qua ...
- NEST 中的时间单位
Time units 英文原文地址:Time units 与 Elasticsearch 交互,我们会遇到需要设定时间段的情况(例如:timeout 参数).为了指定时间段,我们可以使用一个表示时间的 ...
- 物理引擎中velocity的单位是个什么鬼?
现在, 你可能对于什么是velocity的单位感到奇怪.他是单位秒中经过点的一个可测量的量(pt/s).如果你想要在iphone横屏从左往右的移动物体,并且你想在1秒内移动1024个点,那么物体的x速 ...
- [css 实践篇]CSS中的尺寸单位
绝对单位 px: Pixel 像素 pt: Points 磅 pc: Picas 派卡 in: Inches 英寸 mm: Millimeter 毫米 cm: Centimeter 厘米 q: Qua ...
随机推荐
- Docker之一简介
什么是Docker Docker是Google使用go语言进行开发的,对进程进行封装隔离,始于操作系统层面的虚拟化技术. 因为隔离的进程独立于宿主机和其它的隔离进程,因此成为容器 Docker在容器的 ...
- 非常实用的aix 6.1系统安装的教程
今年六月,我们公司出现了一次非常严重的数据丢失的事故.生产服务器崩溃导致所有的业务都陷于停滞,而且由于涉及到公司机密又无法贸然到数据恢复公司进行恢复,可是自己又无法解决.权衡利弊还是决定找一家有保密资 ...
- js将 2023-07-13T10:12:23+0800转为 YYYY-MM-DD HH:mm:ss格式
// 封装的日期时间格式化函数 function formatDateTime(dateTimeString) { const inputDate = new Date(dateTimeString) ...
- Code First 初始化数据时发生异常
问题重现 用Entity Framework的Code First默认生成的数据库文件被我直接删除了, 然后不管怎么重新编译等等, 运行后总是会报错如下: 解决方案同下 Cannot attach t ...
- 话说Hangfire
参考文档 www.hangfire.io github.com/HangfireIO/Hangfire .NET Core开源组件:后台任务利器之Hangfire
- 跨网段和局域网的SQL SERVER发布订阅配置图解和常见问题
非常详细,傻瓜式依葫芦画瓢即可. 特别提示:订阅机器上的防火墙以及发布机器远程登录订阅机的问题 通过非命令行方式配置同步订阅 (1)实验环境说明 (2)实验前准备 (3)订阅设置 (4)测试同步订阅 ...
- Docker安装及使用,Docker 安装MySQL、安装Tomcat、安装RabbitMQ
CentOS7安装Docker Docker从1.13版本之后采用时间线的方式作为版本号,分为社区版CE和企业版EE. 社区版是免费提供给个人开发者和小型团体使用的,企业版会提供额外的收费服务,比如经 ...
- CSP - J理论(2)
CSP - J理论(2) CSP-J理论合集跳转 目录 本目录中所有标题单击均可以快速跳转哦
- eolinker环境变量配置:用例执行前给把某参数设置为全局参数的方法
特别注意:需要使用全局变量或者预处理前务必阅读本链接https://www.cnblogs.com/becks/p/13713278.html 1.场景分析 注册会员流程共计有添加数据,校验数据,提交 ...
- 康谋方案 | 康谋BRICK2与车载以太网设备轻松集成
导读:在当下,汽车行业在安全性.舒适性.智能和万物互联等方面彻底改变了传统车辆的定义.随着这一趋势,汽车行业逐渐开始采用车载以太网来进行车内数据通讯,比如100Base-T1.1000Base-T1, ...