低代码到底是不是行业毒瘤?一线大厂怎么做的?戳此了解>>> 了解详情
写点什么

Avalonia 先睹为快:面向.NET 的跨平台 UI 工具集

2018 年 2 月 21 日

看新闻很累?看技术新闻更累?试试下载 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或 IObservable操作的结果,在其他基于 XAML 的 UI 工具集中这是不支持的。

尽管已经有了很大的进展,但目前只有三位开发人员在承担大多数的工作。相应的,他们呼吁更大的开源社区来做一些力所能及的工作。按照 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

2018 年 2 月 21 日 18:003357

评论

发布
暂无评论
发现更多内容

大作业

Denny-xi

产品经理 产品训练营作业

大作业

z

让“程序猿”抓狂的合并单元格

IT蜗壳-Tango

办公自动化 3月日更 IT蜗壳教学

翻译:《实用的Python编程》06_02_Customizing_iteration

codists

Python

算法攻关-爬楼梯最小花费_0076

小诚信驿站

刘晓成 小诚信驿站 28天写作 算法攻关 爬楼梯最小花费

第 8 周作业 _ prd

园子

ECMAScript 2017(ES8)新特性简介

程序那些事

ecmascript 程序那些事 ecmascript 2017 es8

GoPath模式和GoMoudle模式的相爱相杀

happlyfox

golang 28天写作 3月日更

强软弱虚——Java中的引用类型

少平

大作业--APP的注册与登录

王一凡

产品经理训练

年薪千万的产品经理打开了我对这个职位的新认知!

冰河

深度思考 程序人生 产品经理

大作业—产品文档

三笠

产品

知识图谱上的图神经网络

博文视点Broadview

Zookeeper.03 - 实现分布式锁

insight

zookeeper 3月日更

什么时候编程语言不重要

soolaugust

编程语言

疫情大背景下,电商的比重有望继续攀升;滴滴全球单日订单首次突破5000万

󠀛Ferry

七日更 3月日更

少些爹味才是好爹——再谈自主性

Justin

心理学 教育 28天写作 游戏设计

篮下有球-用例

z

《Redis核心技术与实战》学习笔记 01

escray

redis 极客时间 学习笔记 28天写作 3月日更

从容一些,不必赶「Day 25」

道伟

28天写作

产品经理介绍产品

lenka

3月日更

uc01. 备案合同

新盛

网上签约备案系统-需求文档

新盛

Wireshark 数据包分析学习笔记 Day14

穿过生命散发芬芳

Wireshark 数据包分析 3月日更

架构实践全景图

博文视点Broadview

初识Golang之语法基础介绍

Kylin

golang 读书笔记 3月日更

C/C++ 性能优化背后的方法论:TMAM

vivo互联网技术

c c++ 性能优化 cpu

故事开始了,Python 图像算法取经之旅 365 天的第 1 天

梦想橡皮擦

28天写作 3月日更

微信小程序开发:绑定手机号获取验证码功能

三掌柜

小程序 3月日更

大作业附件1

三笠

大作业6

YING꯭YING

2021 ThoughtWorks 技术雷达峰会

2021 ThoughtWorks 技术雷达峰会

Avalonia先睹为快:面向.NET的跨平台UI工具集-InfoQ