avalonia

Avalonia: 是一个用于 .NET 平台的跨平台 UI 框架,支持 Windows、macOS 和 Linux。适合对 .NET 开发、跨平台开发以及想要使用现代的 UI 框架的开发者。

MIT开源 开源地址

官方入门文档

官方:相较于WPF,添加了什么?

视频讲解,对比WPF的优势

avalonia介绍

特性 Uno Platform Avalonia
框架类型 跨平台UI工具 跨平台UI工具
支持的平台 Windows, macOS, iOS, Android, Web, Linux Windows, macOS, iOS, Android, Web, Linux
编程语言 C#, XAML, JavaScript C#, XAML, F#, JavaScript
UI设计 基于XAML 基于XAML
社区和支持 活跃的社区,微软支持 不断发展的社区,社区驱动支持
性能 在支持的平台上表现良好 在支持的平台上表现良好
学习曲线 中等 中等
灵活性 具有高度灵活性,可使用XAML和C# 具有高度灵活性,可使用XAML和多种语言
文档 详细的文档 良好的文档

环境配置

vscode相关插件

vscode可视化界面开发支持插件: Avalonia for VSCode

vscode中用于快捷初始化各种模板的插件 Avalonia Templates

vscode中支持xaml代码补全插件: Avalonia XAML

rider相关插件

AvaloniaRider插件:包含可视化界面开发,代码提示和自动补全等

rider相关设置

快捷键相关

自动引入包

使用vscode系列快捷键的时候,自动引入包的快捷键将为ctrl+.如果无法操作,原因是因为与微软输入法/微信输入法中切换中英文符号的快捷键冲突了

Code completion

下面未验证

代码补全默认是 ctrl + i / ctrl + spacectrl + space 和 mac 的输入法切换是冲突的。

ctrl + i 和 ide 操作快捷键有冲突。所以这里直接重新分配了 alt + / 和 alt + shift + /,给到基本和补全当前语句上,因为我只觉得这2个有用。

自动补全结束标签

打开Settings -> Editor -> General -> Smart Keys

确保Automatically insert closing tag选项已启用。

相关代码片段记录

propdp

1
2
3
4
5
6
7
8
9
10
11
12
public static readonly DependencyProperty $PropertyName$Property =
DependencyProperty.Register(
nameof($PropertyName$),
typeof($Type$),
typeof($OwnerType$),
new PropertyMetadata($DefaultValue$));

public $Type$ $PropertyName$
{
get => ( $Type$ ) GetValue($PropertyName$Property);
set => SetValue($PropertyName$Property, value);
}

propfull

1
2
3
4
5
6
private $Type$ _${PropertyName}$$;
public $Type$ $PropertyName$
{
get { return _${PropertyName}$$; }
set { _${PropertyName}$$ = value; }
}

propp

用于prism框架的通知机制

cmd

1
2
3
4
5
6
7
8
9
10
11
12
13
private RelayCommand _$CommandName$;

public ICommand $CommandName$ => _${CommandName}$ ??= new RelayCommand($ExecuteMethod$, $CanExecuteMethod$);

private void $ExecuteMethod$()
{
// TODO: Add your execution logic here
}

private bool $CanExecuteMethod$()
{
// TODO: Add your can execute logic here
}

cmdfull

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
private RelayCommand _$CommandName$;

public ICommand $CommandName$ => _${CommandName}$ ??= new RelayCommand($ExecuteMethod$, $CanExecuteMethod$);

private void $ExecuteMethod$()
{
// TODO: Add your execution logic here
}

private bool $CanExecuteMethod$()
{
// TODO: Add your can execute logic here
return true;
}

设置保存时格式化代码

设置-工具-保存时的操作 设置为::重新设置代码格式

项目创建

  • 创建新的Avalonia项目: dotnet new avalonia.app -o MyApp

  • 下面命令安装项目模板,如果你你还没有安装他们:dotnet new install Avalonia.Templates

最后在VS Code中打开MyApp文件夹,打开任何axaml文件来激活扩展和代码完成。

vs插件相关插件

Avalonia for Visual Studio: 自动补全,ui可视化开发

Avalonia Toolkit: 创建Avalonia模板

Avalonia

使用 C# 和 XAML

开发桌面、嵌入式、移动和 WebAssembly 应用程序。最流行的 .NET UI 客户端技术

使用prism

Prism.Avalonia 是一个强大的UI框架,旨在增强您的跨平台应用程序,特别为基于Avalonia的项目设计。它拥抱了IoC(Inversion of Control)容器、导航机制以及消息传递等关键MVVM模式组件,让Avalonia应用的构建更加高效、有序。此项目秉承Microsoft的模式与实践,为开发者提供了一个开放源码的选择,帮助他们以类似WPF的逻辑和流程开发Avalonia应用,尽管两者间存在一些差异。

1
2
3
4
5
6
7
# 对于最新预览版支持Avalonia v11.x
dotnet add package Prism.Avalonia --version 9.0.401.11110-pre
dotnet add package Prism.DryIoc.Avalonia --version 9.0.401.11110-pre

# 若您正使用Avalonia GA版本如v8.1.97
dotnet add package Prism.Avalonia --version 8.1.97.11073
dotnet add package Prism.DryIoc.Avalonia --version 8.1.97.11073