Avalonia UI
===
Video : https://www.youtube.com/watch?v=THKjD-ZwGPk
- 10 年了
- 支援的作業系統
![img](https://res.cloudinary.com/practicaldev/image/fetch/s--Ab_uTLEv--/c_imagga_scale,f_auto,fl_progressive,h_420,q_auto,w_1000/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wy6p8jsp5e98cj9cv5nq.png)
- Windows, MacOS, Linux, iOS, Android, WASM
- 預計要支援: Vision OS, Tizen, WebOS
- ResperriPi 也可以跑
- Open Source: https://github.com/AvaloniaUI/Avalonia
- .NET Foundation 的一部分
- Jetbrains 的 Rider 是 Avalonia 做的
- 有些人把 Qt 轉換到 Rider (Embedded device dev)
## 架構
![img](https://res.cloudinary.com/practicaldev/image/fetch/s--wcYCAHfC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wr5d6xbygejsi4f6pw0i.png)
![img](https://res.cloudinary.com/practicaldev/image/fetch/s--J1YIeJjX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/x5q7x1d628kcb1d4g09g.png)
- Rendering
- UI 的東西都是自己 render 的 => 不是用原生的控制項,跟 Uno 一樣但跟 MAUI 不一樣
- 這樣才能做到 Pixel perfect
- Rendering engine
- Direct2D
- Skia
- .NET MAUI 則是 Wrapper 一層包裝原生控制項
- 跟 .NET MAUI 的 runtime 的稍為不同,在 Mac OS 上不一樣
- Avalonia: .NET Core CLR
- .NET MAUI: mono
- 執行速度快 (影片有 demo)
## Total control
- UI 可以控制得很多,已經有包含 Theme system
## Dev Experience
- 用 XAML (不過不完全相容於 WPF, UWP 網站有介紹)
- 副檔名是 axaml (內容就是 XAML 啦)
- 跟 Rider 整合得很好
- AvaloniaRider 的外掛可以 prview xaml
- 也有 VS 的 extension
- 有內建許多的 project template
- Avalonia .NET MVVM app
- for desktop
- Avalonia .NET app
- Avalonia Corss Platform Application
- 包含 brower, mobile platofmr
## MAUI Hybrid
- 可以跟互相使用 (MAUI app 使用 Avalonia control, Avalonia App 使用 MAUI control)
## Avalonia XPF
![img](http://avaloniaui.net/img/how-it-works/XPF.png)
- Cross-Platform WPF
- Suports Windows, macOS & Linux
- iOS, Android, and Brower coming 2024
- 是需要付費使用的
- Hybrid XPF
- Use WPF controls in Avalonia Apps
### Reference
- [Avalonia platform support - why it's simple](https://dev.to/avalonia/avalonia-platform-support-why-its-simple-cjd)
- [High level architecture overview](https://github.com/AvaloniaUI/Avalonia/wiki/High-level-architecture-overview)
- [Avalonia UI and MAUI - Something for everyone](https://avaloniaui.net/Blog/avalonia-ui-and-maui-something-for-everyone,ce77d8d4-8dad-45ce-ae5a-566f3786571a)
- [Avalonia XPF](https://avaloniaui.net/XPF)