Avalonia:一个.NET跨平台UI框架

news2024/12/29 11:39:30

概述

Avalonia是一个强大的框架,使开发人员能够使用. NET创建跨平台应用程序。它使用自己的渲染引擎来绘制UI控件,确保在各种平台上保持一致的外观和行为,包括Windows,macOS,Linux,Android,iOS和WebAssembly。这意味着开发人员可以共享他们的UI代码,并保持统一的外观和感觉,而不管目标平台如何。

使用Avalonia构建的应用程序是用C#或F#编写的,这使得快速原型化应用程序变得容易,这些应用程序可以随着时间的推移开发成复杂的系统。与其他可能受到有限API限制或性能低下的工具包不同,Avalonia应用程序具有完全访问平台功能的优势,并提供令人难以置信的性能,这要归功于组合渲染器。

由于Avalonia应用程序是跨平台应用程序,它们的架构与其他传统的跨平台应用程序类似。最常见的方法是创建一个包含共享代码的核心项目,然后开发将使用此共享代码的特定于平台的项目。

Avalonia提供了两种创建用户界面的技术。第一个是使用代码构建UI视图,利用Avalonia提供的广泛的API。或者,开发人员可以利用可扩展应用程序标记语言(XAML),这是一种允许开发人员定义用户界面的声明性标记语言。在这种方法中,用户界面结构在XAML文件中描述,而运行时行为在单独的代码隐藏文件中定义。

image-20240606140935810

开发者会很在意开源协议是什么,Avalonia的开源协议是宽松的MIT协议,免费可商用:

image-20240607104013167

看看官网介绍

image-20240607104242409

表示有一些公司也在使用。

image-20240607104348081

为每个平台构建漂亮的应用程序不费力。

image-20240607104554986

可以使用Visual Studio、Visual Studio Code、JetBrains Rider进行开发。

image-20240607104715154

Avalonia被认为是WPF的精神继承者,Avalonia提供了熟悉的开发人员体验,允许您利用多年的预先存在的知识和投资。Avalonia受到JetBrains、AMD、佳能、施耐德电气、Unity Games等行业领导者的信任,使他们的WPF应用程序更加现代化。

Avalonia XPF。使用Avalonia XPF,我们的二进制兼容的跨平台WPF,可以实现跨平台WPF应用程序的最小更改。在Linux和macOS上运行WPF不仅是可能的,而且很容易!过去需要几个月的工作现在只需要几个小时。

注意Avalonia XPF是需要收费的。

image-20240607104933243

Avalonia社区正在成长。

image-20240607105009831

受开发者喜爱,受企业信任。

真的有说的这么好吗?得试试才知道!

实践

安装模板

打开cmd输入:

dotnet new install Avalonia.Templates

成功安装,之后界面如下所示:

image-20240606142153619

创建项目

首先,我们将使用MVVM Avalonia模板: Avalonia MVVM Application (或CLI中的 avalonia.mvvm )。

我这里使用的是VS,需要先安装一下扩展:

image-20240607105625887

在Visual Studio中,单击创建新项目。

在搜索框中键入 Avalonia

单击Avalonia应用程序,然后单击下一步。

image-20240606143031767

允许选择您希望定位的平台:单击桌面,然后单击下一步。

允许选择设计模式:单击ReactiveUI,然后单击Create。

image-20240606143510800

该模板将创建一个新解决方案和两个新项目。 GetStartedApp 是每个平台之间共享的主项目。 GetStartedApp.Desktop 是桌面平台的平台特定项目。

image-20240606143821075

运行项目

右键单击 GetStartedApp.Desktop 项目并选择Set as Startup Project。

image-20240606144021721

第一个Avalonia应用:

image-20240606144150864

我也是刚开始学习,具体好不好用,得用了才知道。

如果以后有跨平台的需求,同时又喜欢C#与xaml可以试试Avalonia,还有一个Uno Platform,这个还没试过,试了再来介绍。

参考

1、AvaloniaUI/Avalonia: Develop Desktop, Embedded, Mobile and WebAssembly apps with C# and XAML. The most popular .NET UI client technology (github.com)

2、[Avalonia UI - Home](

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1837264.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

轻轻松松上手的LangChain学习说明书

本文为笔者学习LangChain时对官方文档以及一系列资料进行一些总结~覆盖对Langchain的核心六大模块的理解与核心使用方法,全文篇幅较长,共计50000字,可先码住辅助用于学习Langchain。 一、Langchain是什么? 如今各类AI…

大模型面试指南:掌握关键技术与策略,成功应对面试挑战

随着人工智能技术的快速发展,大型预训练模型在自然语言处理、计算机视觉、语音识别等领域取得了显著成果。这些模型通过在海量数据上进行预训练,能够捕捉到丰富的特征信息,为各种下游任务提供强大的支持。在求职面试中,掌握大模型…

OpenAI新开放了这些好用的API功能(附AI学习指南)

OpenAI近期召开了开发者大会,同时也发布和开放了一些新的功能特性,比如新版本GPT-4 Turbo,支持128k上下文,知识截止更新到2023年4月,视觉能力、DALLE3,文字转语音TTS等等全都对API开放,GPTs商店…

【Unity拖拽物体】实现对点中的3D物体进行拖拽的功能

场景结构,两个普通模型 第一种 脚本所挂载的物体才可以被拖拽 【PC鼠标版本】 using UnityEngine;// 这个脚本实现了,本脚本所在的游戏物体能够被拖拽 public class DragObjectT : MonoBehaviour {private Vector3 screenPoint; // 存储物体在屏幕上的位…

多行文本的文字展示全部和收起功能

组件代码&#xff1a; <template><!-- 外层容器&#xff0c;使用相对定位 --><div class"relative"><!-- 文本容器&#xff0c;根据 expanded 状态决定是否应用 line-clamp-4 类 --><div :class"{ line-clamp-4: !expanded }"…

没有二十年功力,写不出这一行代码!

这篇文章要从一个奇怪的注释说起&#xff0c;就是下面这张图&#xff1a; 我们可以不用管具体的代码逻辑&#xff0c;只是单单看这个 for 循环。 在循环里面&#xff0c;专门有个变量 j&#xff0c;来记录当前循环次数。 第一次循环以及往后每 1000 次循环之后&#xff0c;进…

阻力支撑相对强度(RSRS)选股系列报告之三

https://download.csdn.net/download/SuiZuoZhuLiu/89447699?spm1001.2014.3001.5503https://download.csdn.net/download/SuiZuoZhuLiu/89447699?spm1001.2014.3001.5503

电脑密码忘记了怎么办?3步教你找回密码!

在日常使用电脑的过程中&#xff0c;忘记密码是一件令人头痛的事情。如果您不慎忘记了电脑的登录密码&#xff0c;无法进入系统进行工作和娱乐&#xff0c;这时需要找到合适的解决方案来恢复对电脑的访问权限。那么电脑密码忘记了怎么办呢&#xff1f;本文将介绍三种解决方法&a…

Uncaught TypeError: Cannot read properties of null (reading ‘isCE‘)

问题描述 使用 view-ui-plus 加 vue3 开发项目&#xff0c;本地启动项目正常&#xff0c;但其他人将代码拉下来&#xff0c;启动项目时报错 Uncaught TypeError: Cannot read properties of null (reading isCE)&#xff1a; 原因分析&#xff1a; 尝试将 mode_nodules 文件删…

C++实时检测耳机的插入与拔出(附源码)

目录 1、实现继承于IMMNotificationClient接口类的CMMNotificationClient类,实时感知音频设备变化的通知事件 2、在CMMNotificationClient的构造函数中初始化多媒体设备COM接口,设置回调类指针 3、通过获取音频设备接口下外设的KSJACK_DESCRIPTION 信息判断耳机的连接状态…

ArcGIS arcpy代码工具——关于工具使用的软件环境说明

系列文章目录 ArcGIS arcpy代码工具——批量对MXD文件的页面布局设置修改 ArcGIS arcpy代码工具——数据驱动工具批量导出MXD文档并同步导出图片 ArcGIS arcpy代码工具——将要素属性表字段及要素截图插入word模板 ArcGIS arcpy代码工具——定制属性表字段输出表格 ArcGIS arc…

鸿蒙实现自定义Tabbar样式,显示数字红点提示

前言&#xff1a; DevEco Studio版本&#xff1a;4.0.0.600 Tabs的链接参考&#xff1a;OpenHarmony Tabs TabContent的链接参考&#xff1a;OpenHarmony TabContent 通过查看链接参考我们知道可以通过TabContent的tabBar来实现自定义TabBar样式&#xff08;CustomBuilder&…

“运动过量”?想多了,普通骑友没那能力和意志力,好好骑车吧

最近听到“运动过量”这个词挺多的&#xff0c;身为骑行爱好者的校长&#xff0c;感觉又好笑又无奈&#xff0c;所以想写点东西&#xff0c;这篇文通过分析普通骑友的运动习惯、能力和意志力&#xff0c;探讨了“运动过量”这一概念在骑行领域中的适用性。文章指出&#xff0c;…

基于PHP的民宿管理系统

有需要请加文章底部Q哦 可远程调试 基于PHP的民宿管理系统 一 介绍 此民宿管理系统基于原生PHP开发&#xff0c;数据库mysql&#xff0c;前端jquery.js和echarts.js。系统角色分为用户和管理员。用户可以在线浏览和预订民宿&#xff0c;管理员登录后台进行相关管理等。(在系统…

精度丢失引起的支付失败问题

问题描述 在提交订单时候&#xff0c;输入充值金额和优惠码&#xff0c;后台会返回具体的订单信息&#xff0c;如下图&#xff0c;支付金额应该是1 * (1 - 0.09) 0.91&#xff08;这个是理想状态&#xff09;&#xff0c;但是表单显示的是0.90999997&#xff0c; 然后点击确…

大模型系列:提示词管理

既然大模型应用的编程范式是面向提示词的编程&#xff0c;需要建立一个全面且结构化的提示词库&#xff0c; 对提示词进行持续优化也是必不可少的&#xff0c;那么如何在大模型应用中更好的管理提示词呢&#xff1f; 1. 提示词回顾 提示词在本质上是向大型语言模型&#xff08;…

算法设计与分析 实验3 回溯法求地图填色问题

目录 一、实验目的 二、背景知识 三、实验内容 四、算法思想 未优化的回溯算法 节点选择-最小剩余值准则&#xff08;MRV&#xff09; 节点选择-最多约束准则&#xff08;DH&#xff09; 颜色选择-最少约束选择 数据结构的选择 向前探查 颜色轮换&#xff08;贪心置…

构建专属Web SSH客户端:从零到一打造你的在线运维利器

随着云服务和远程工作的普及&#xff0c;能够随时随地访问服务器变得越来越重要。虽然市面上已有不少成熟的SSH客户端&#xff0c;但打造一个属于自己的Web版SSH工具&#xff0c;不仅能根据个人需求定制功能&#xff0c;还能享受灵活访问的便利。 本文将带你一步步实践&#xf…

linux——ansible实验

要求 0.进入servera进行准备工作&#xff0c;做一些清理 1&#xff09;停止httpd服务&#xff0c;清除httpd软件包、配置文件、主页文件 2&#xff09;清理/etc/hosts文件中的内容&#xff0c;只保留最上面默认的两行 &#xff08;127.0.0.1和::1这两行&#xff09; 1.根据之前…

004-配置交换机ssh远程登录

配置交换机ssh远程登录 注意事项 要远程的本机电脑必须与该交换机在同一个网段&#xff0c;以下实验在172.16.12段下模拟&#xff0c;本地ip设置为172.16.12.10&#xff0c;交换机的ip设置为172.16.12.254 将密码设置为明文&#xff08;simple&#xff09;是不安全的&#x…