登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
导读
排行榜
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
写记录
写博客
小组
VIP申请
VIP网盘
网盘
联系我们
发帖说明
道具
勋章
任务
淘帖
动态
分享
留言板
导读
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
业界
›
Avalonia跨平台实战(二),Avalonia相比WPF的便利合集(一 ...
Avalonia跨平台实战(二),Avalonia相比WPF的便利合集(一)
[ 复制链接 ]
钱匾
2025-6-2 00:42:40
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
本话讲的是Avalonia中相比于WPF更方便的一些特性
布局
布局方面没什么好说的,和WPF没什么区别,Grid,StckPanel...这些,不熟悉的话可以B站上找一下教程
xml树
在WPF中我们是可以在调试的时候显示Xml结构树的,在Avalonia中有些区别,在调试模式下,我们可以按F12调出Devtools,就可以看到Xml结构树了
Margin
在Avalonia中,我们有两种方式去给元素更便利的添加Margin
特性
看到Margin,熟悉WPF的小伙伴应该很清楚有时候为了给panel中各种控件写margin的繁琐,现在Avalonia对于布局新出了一个特性,Spacing。
在这里可以看到,我在StackPanel中放了4个Textblock,且没设间距,看起来像只有一个元素一样,在WPF中,我们调整间距的话还得去给每一个子元素添加margin间距,。
但是现在有新特性,直接一句代码就可以搞定。没错,就简简单单的Spacing="10"就搞定了每一个元素的间距,再也不用为了调整各种间距而头疼了
style
没错,我们还可以使用Style来更方便的给元素添加特性。也许大家会想,WPF中不也可以吗。其实在Avalonia中对于选择器引入了CSS的概念,熟悉前端的小伙伴应该知道,css选择器有很多,可以更加方便的查找符合条件的元素,不说废话,上图,请看下图
这里可以看到,我们定义了一个样式,大家有没有看出区别,没错,在StackPanel上有这么一个属性Classes="aaa",这代表我们可以给这个元素绑定多个属性,和前端用法一样Classes="class1 class2"就可以添加多个特性了
在Style上,也看到这么一句话Selector="StackPanel.aaa TextBlock",这句话代表什么呢,也就是这个样式只会作用于StackPanel且带有aaa样式下的所有TextBlock元素。所以,看到这里,其实已经知晓Avalonia中引入了css中的概念,有各种选择器。这可以使我们更加便利的调整自己所需要的样式。
特性
Watermark提示文本
在WPF中我们要知道,想要为输入框输入提示文本,要么借助第三方控件库,要么自己自定义控件,但是在Avalonia中,官方自己提供了这个属性,就是Watermark,只需要在textbox上加上这个属性就行
[/code][align=center]
[/align][size=1]可以清除的看到只需要加上这么一个属性就完成了提示文本[/size]
[/list]
[list]
[*][size=2]MaskedTextBox[/size]
[size=1]这个控件我们知道winform中有,wpf中原生是没有的,想要只能自定义,而Avalonia中原生是自带这个控件的[/size]
[code]
复制代码
只需要这么使用,我们就能得到下图的效果
RowDefinitions、ColumnDefinitions
在Wpf中我们定义一个三行三列的栅格布局得这么写
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="*" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
</Grid>
复制代码
但是在Avalonia中我们只需要这么写就可以实现同样的效果,当然,在比较复杂的场景下也可以像上面的写法来写,并不是说只支持下面这种写法,下面这种写法只是在简单场景下更方便我们写布局,不用再去写更多的代码
[/code]
[*][size=2]数据绑定[/size]
[size=1]这里简单说一下数据绑定上相对于WPF的便利性[/size]
[code]
复制代码
这里同样可以看到类似于CSS选择器的绑定方式,直接将输入框的文本绑定到textblock上了。
对于数据绑定还有更多便利的使用,请查看官方文档Avalonia下更方便的数据绑定
响应式事件
这里的响应式事件也就是会监听某个属性的状态来决定某个元素的状态,也就是响应用户交互并触发操作,下面将用一个最简单的例子来讲一下,其效果和前端表单Form的数据验证一样
<TextBox Width="200" Watermark="请输入文本" Text="{Binding InputText}"></TextBox>
<Button Width="100" Content="测试按钮" Command="{Binding ButtonIsEnableCommand}"</Button>
复制代码
上面是我们的代码,可以看到我们给文本框绑定了属性,同样也给按钮绑定了事件,这样会有什么效果呢,看下图
可以清楚的看到,在文本框没有输入文本的情况下,按钮是不可点击的状态,且我们并没有设置按钮的的IsEnable属性。这样就完成了响应式事件,对于这种情况,相信很多小伙伴可以想到应用的场景。在某些场景下,我们要根据状态来是否可执行下一步就可以用这个来实现
动画Animation
说到动画,我们更加熟悉的应该是前端了,前端实现动画可以说是最简单了,基于css可以实现很多酷炫好看的动画。
现在在Avalonia中我们也可以像css一样,更好的使用关键帧动画、过渡效果,
如上面两张图所示,我们可以看到css选择器的概念,基于这种概念,去设置对应元素的动画和过渡效果,比起WPF来是不是更方便呢
此次记录的便利性暂时到这,博主后续会继续研究继续更新其他的便利性,咱们下一话讲一下某些从WPF转到Avalonia下可能遇到的坑
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
Avalonia
跨平台
实战
相比
WPF
相关帖子
一款开源、多语言的 WPF 可筛选 DataGrid 控件
Actix-Web完整项目实战:博客 API
扣子Coze实战:一键复刻全网10W+爆款文案
扣子Coze变现实战:一天产出50条爆款书单视频,每月躺赚5位数,免费分享!
Apipost 自动化测试实战:用 IF 控制器实现“增删改查”依赖链
SvelteKit 开发实战:拥抱 Web 标准 (Web Standards)
工作中实战sql命令集合
Flask入门实战:轻松掌握模板渲染与静态文件加载
【大数据高并发核心场景实战】缓存层 - 日亿万级请求日志收集
定制化 Live555 实战:按需开发低耗 RTSP 服务器,完美适配 C# 项目
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
业界
一款开源、多语言的 WPF 可筛选 DataGrid 控件
1
301
俏襟选
2025-11-29
业界
Actix-Web完整项目实战:博客 API
0
502
馏栩梓
2025-12-01
业界
扣子Coze实战:一键复刻全网10W+爆款文案
0
20
荪俗
2025-12-01
业界
扣子Coze变现实战:一天产出50条爆款书单视频,每月躺赚5位数,免费分享!
2
30
阎一禾
2025-12-02
业界
Apipost 自动化测试实战:用 IF 控制器实现“增删改查”依赖链
1
74
乳杂丫
2025-12-02
业界
SvelteKit 开发实战:拥抱 Web 标准 (Web Standards)
0
961
岳娅纯
2025-12-02
安全
工作中实战sql命令集合
0
565
呵桢
2025-12-03
业界
Flask入门实战:轻松掌握模板渲染与静态文件加载
0
895
祖柔惠
2025-12-03
业界
【大数据高并发核心场景实战】缓存层 - 日亿万级请求日志收集
0
356
汝雨竹
2025-12-04
安全
定制化 Live555 实战:按需开发低耗 RTSP 服务器,完美适配 C# 项目
0
216
敕码
2025-12-07
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
签约作者
程序园优秀签约作者
发帖
钱匾
2025-6-2 00:42:40
关注
0
粉丝关注
16
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
anyue1937
9994893
kk14977
6845355
3934307807
991122
4
xiangqian
638210
5
宋子
9987
6
闰咄阅
9991
7
刎唇
9993
8
俞瑛瑶
9998
9
蓬森莉
9952
10
匝抽
9986
查看更多