初探Avalonia:一个面向.NET的跨平台UI工具包

.NET Core 生态系统中的跨平台 UI 工具包问题

.NET Core 生态系统中一个常被提及的缺陷是缺乏真正的跨平台 UI 工具包。虽然过去有过一些尝试,如 Silverlight 和 Xamarin Forms,但尚未实现完整的 XAML 风格的跨平台解决方案。Avalonia 正在尝试填补这一空白,计划支持 Windows(.NET Framework、.NET Core)、Linux(GTK)、MacOS、Android 和 iOS。

Avalonia 的设计与特点

Avalonia 的主要灵感来源于 Windows Presentation Foundation (WPF),但它并不是 WPF 的直接移植。在设计上,Avalonia 做出了一些关键改变,例如样式的实现方式。在 Avalonia 中,样式更像 CSS,支持样式类和选择器的级联和重叠,而 WPF 只允许每个控件使用单一样式。这使得 Avalonia 能够减少重复样式的需求。

Avalonia 使用伪类(如 :pointerover)来实现悬停效果,而不是触发器。其他伪类包括 :focus:disabled:pressed(用于按钮)、:checked(用于复选框)等。

Avalonia 的样式只能绑定到 StyledProperty,这与 WPF 的 DependencyProperty 类似,支持相同的模式。Avalonia 还支持附加属性,这在布局控件(如网格)中尤为重要。

Avalonia 的数据绑定语法支持异步操作,例如可以绑定到 Task<T>IObservable<T> 的结果,这是其他基于 XAML 的 UI 工具包所不具备的。

Avalonia 的开发现状与需求

尽管 Avalonia 已经取得了很大进展,但目前主要由三名开发者负责开发工作。因此,他们呼吁开源社区提供帮助,特别是在以下领域:

  • 文档:主要是概念性文档、教程和操作指南。
  • 演示应用:制作类似 WPF 的教程应用,并突出 Avalonia 的不同之处。
  • XAML 专家:帮助处理更高级的 XAML 构造,如条件和自适应布局(类似于 Xamarin.Forms 的自适应布局)。
  • 缺失的常见控件:如 DataGrid,这是一个需要大量代码的控件,目前没有时间移植。
  • 2D 图形专家:特别是在非 DirectX 渲染子系统上的文本布局和渲染,Avalonia 在非 Windows 平台上使用 Skia,但缺乏文本布局引擎。
  • Visual Studio 扩展:升级现有扩展,支持新的设计器和 XAML 智能感知功能。

开发与许可

Avalonia 在 GitHub 上以 MIT 许可证进行开发。

阅读 11
0 条评论