Avalonia 先睹为快:面向.NET 的跨平台 UI 工具集
看新闻很累?看技术新闻更累?试试 下载 InfoQ 手机客户端 ,每天上下班路上听新闻,有趣还有料!
在.NET 核心生态中,常常被人诟病的一个短板就是缺少真正跨平台的 UI 工具库。过去,在多个平台上都有过相关的尝试,比如 Silverlight 和 Xamarin Forms ,但是它们都没有实现完全 XAML 风格的跨平台方案。 Avalonia 尝试计划支持 Windows、Linux (GTK)、MacOS、Android 和 iOS。
尽管它的原则灵感来源于 Windows Presentation Foundation (WPF) ,但这并不是 WPF 简单直接的发展。在设计时,有了一些重要的变化,比如样式的运行方式。在 Avalonia 中, 样式的运行方式更像CSS ,具有样式类和选择器,能够级联和重叠。与之相对的是,WPF 每个控件只允许有一个样式。这意味着Avalonia 能够减少重复样式。
Avalonia 没有使用触发器,而是使用伪类(pseudo-class),比如针对悬停效果的“:pointerover”。其他的伪类包括::focus、:disabled、针对按钮的:pressed、针对复选框的:checked 等等。
Avalonia 样式只能绑定到 StyledProperty 上。WPF 的 DependencyProperty 具有相同的基本模式。同时,还支持附加属性。(这对于布局控件很有意义,比如 grid 需要了解它的子节点要放到什么位置。)
Avalonia 有个很有意思的特性,那就是数据绑定语法支持异步操作。例如,Avalonia 能够绑定 Task
尽管已经有了很大的进展,但目前只有三位开发人员在承担大多数的工作。相应的,他们呼吁更大的开源社区来做一些力所能及的工作。按照 Jeremy Koritzinsky 的说法,目前最需要帮助的领域是:
大多数的概念性文档、教程以及如何使用的指导。
样例 App
使用 Avalonia 制作类似于 WPF 的教程应用并凸显它们之间的差异。
XAML 专家
帮助我们实现更高级的 XAML 结构,比如条件和可适配的布局(比如 Xamarin.Forms 有一定级别的可适配布局)
缺少的通用控件
DataGrid:我们知道需要这个控件,但是目前没有时间移植大量的代码(目前,每个 WPF 或 UWP 实现的代码行接近 Avalonia 的所有代码数量)
2D 图像专家
尤其是非 DirectX 渲染子系统下的文本布局 / 渲染。我们在非 Windows 平台上使用的是 Skia,它缺少一个文本布局引擎。
Visual Studio Extension
为新的设计师、XAML 智能感应更新扩展。
Avalonia 目前在 GitHub 上开发,遵循 MIT 许可证。
查看英文原文: An Early Look at Avalonia, a Cross-Platform UI Toolkit for .NET
更多内容推荐
-
微软发布.NET 5.0 RC1,未来将只有一个.NET
微软发布了.NET 5.0 RC1,这是.NET 5在11月正式发布之前的第一个“go-live”版本。
-
VB 在微软产品路线图中的尴尬位置
从一开始,微软就公开宣布Visual Basic和C#将在.NET平台中被同等对待。然而另外一方面,社区却不时指责微软对VB的支持力度不够。那么事实又在何方呢?
-
微软开源 XAML Behaviors
长期以来,XAML Behaviors都是WPF/Silverlight开发中一个令人懊恼的部分。尽管用处极大,但该库的分发和维护方法有些奇怪。随着XAML Behaviors开源公告的发布以及相应NuGet包的创建,该问题最终得到了解决。
-
Microsoft 标准化了跨 UWP 和 Xamarin 的 XAML
Microsoft在BUILD 2017大会上宣布公开XAML标准的首个草案。XAML是一种标记方言(dialect),意在统一用户接口组件的定义方式。
-
虚拟研讨会:.NET 的未来在哪里?
.NET生态系统在过去的一年中发生了很多事情。如果要关注细节,那大的景象难以描绘。在每个方面都有新的动作:跨平台、云、移动、Web应用和通用应用。开发人员都想知道这一切会造成什么改变,要实现改变必须要做些什么。
-
把 WPF 作为一种富客户端技术
WPF的出现使开发视觉效果非凡的应用程序变得容易了不少,不过它其实作为一种开发前端富客户端应用程序的技术也非常有竞争力,而应用程序的后端服务可以使用如Java、Ruby或.NET等任何技术。这篇文章将会把WPF和其他一些技术,例如AJAX/DHTML、Swing或Flash进行对比;同时文章中也会分享一些使用WPF作为客户端的合适场景,这些示例会使用Java作为后台开发技术。
-
MonoTouch:用.NET 开发 iPhone 应用
MonoTouch是一个基于Mono的用于开发iPhone应用程序的框架。虽然在一定意义上可以让大家使用熟悉的C#语言和核心函数库,不过开发人员仍旧需要学习MonoTouch的开发环境以及iPhone独特的GUI开发要求。Bryan Costanich为大家展示了如何使用MonoDevelop IDE来快速地创建基于.NET的iPhone应用程序。
评论