.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 许可证进行开发。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。