前言
在跨平台桌面应用开发领域,Avalonia凭借其与WPF相似的API设计和跨平台特性,逐渐成为.NET生态中备受关注的UI框架。
然而,对于初学者而言,从零搭建一个包含数据展示、浏览器集成、多语言支持等功能的完整应用仍存在较高门槛。
推荐一个通过整合Avalonia、SukiUI等核心组件,提供一套开箱即用的桌面应用开发模板,在降低学习成本,加速开发流程。本文将从项目架构、功能实现、技术特点等维度展开分析,为大家提供全面的参考指南。
项目介绍
一个简易的桌面应用集成框架,其核心在于展示如何基于Avalonia与SukiUI开发一个简单的桌面应用,并整合了如DataGrid、CefGlue.Avalonia等常用功能,以简化开发流程并提高效率。
该框架不仅展示基本组件的使用方法,还提供对图表(LiveChartsCore)、图标库(Material.Icons.Avalonia)的支持,以及多语言环境和更新功能的搭建示例。
项目功能
1、数据网格(DataGrid)与分页功能
实现方式:基于Avalonia.Controls.DataGrid控件,通过自定义PagedCollection<T>类实现数据分页加载;
交互逻辑:分页控件与DataGrid双向绑定,用户点击页码时触发LoadPageCommand命令,动态更新数据源;
示例代码:DataGridFeature.axaml中定义了列配置与分页控件布局,DataGridViewModel.cs处理数据加载与分页逻辑。
2、内嵌浏览器(CEF)集成
技术选型:采用CefGlue.Avalonia实现Chromium嵌入式框架的集成;
当前限制:暂未实现页面内容解析(如DOM操作)与代理设置,但支持基础导航与地址栏显示;
使用场景:适合需要嵌入Web应用(如内部管理系统、帮助文档)的桌面工具。
3、动态图表渲染(LiveChartsCore)
功能覆盖:支持折线图、柱状图、饼图等常见图表类型;
数据绑定:通过SeriesCollection绑定动态数据源,例如实时监控系统中的传感器数据;
交互扩展:支持图表缩放、鼠标悬停提示等高级功能。
4、图标库(Material.Icons.Avalonia)
引入方式:通过NuGet包直接添加依赖,无需手动复制资源文件;
使用示例:在XAML中通过<materialIcon:MaterialIcon Kind="Home" />快速插入Material Design图标。
5、多语言支持
实现机制:使用CSV文件存储翻译键值对(如Resources/zh-CN.csv),通过Localization.cs工具类动态加载语言包;
切换方式:调用Localization.SetLanguage("en-US")即可全局更新UI文本,无需重启应用。
6、自动更新功能
技术栈:集成Downloader库实现后台版本检查与文件下载;
触发流程:UpdateTask.cs定期调用CheckVersion()方法,检测到新版本后下载安装包并提示用户重启。
项目特点
1、简单易懂:大多数功能直接使用,减少封装层级,方便理解。
2、跨平台支持:基于Avalonia框架,确保在Windows、macOS和Linux等多个操作系统上的兼容性。
3、功能全面:涵盖从数据展示到用户交互,再到更新机制在内的多个方面。
4、高度定制化:通过SukiUI提供的丰富的UI控件和主题选项,满足个性化需求。
项目结构
EasyTemplate.Desktop.Avalonia/
├── EasyTemplate.Ava.Desktop/ # 主启动项目
├── EasyTemplate.Ava/ # 桌面组件主要项目
│ └── Features/ # 组件存放目录
├── EasyTemplate.Ava.Tool/ # 工具类、实体和配置
│ ├── Resources/ # 多语言资源文件
│ ├── Util/ # 工具类
│ ├── Configuration/ # 配置文件
│ └── Entity/ # 实体类
└── ThirdPartyDemo/ # 第三方示例(已编译版本)
├── SukiUI.Demo/
└── Material.Icons.Avalonia/
项目技术
.NET 8
作为长期支持(LTS)版本,提供性能优化与新特性(如原生AOT编译);
Avalonia 11
跨平台UI框架,支持Windows/macOS/Linux,API设计兼容WPF开发;
SukiUI
现代化控件库,补充Avalonia原生控件的不足(如导航栏、卡片布局);
LiveChartsCore
轻量级图表库,相比OxyPlot更易上手,适合快速实现数据可视化。
项目效果
模版效果
模版首页
数据管理
内嵌浏览器
系统设置
项目源码
Gitee:https://gitee.com/allofyouenemies/EasyTemplate.Desktop.Avalonia
其他组件
Avalonia 官方文档
https://docs.avaloniaui.net/zh-Hans/docs/welcome
SukiUI 官方文档
https://kikipoulet.github.io/SukiUI/documentation/controls/navigation/stackpage.html
SukiUI
https://github.com/kikipoulet/SukiUI
总结
EasyTemplate.Desktop.Avalonia 作为一个开源项目,为桌面应用程序的开发提供一个良好的起点。它不仅展示了如何利用Avalonia和SukiUI构建跨平台应用,而且还集成了多种实用功能,大家可以更加专注于业务逻辑的实现。