前言:
几年前研究 Xamarin.Forms 时,为了尝试对Linux平台的支持,发现了 Avalonia, 可以把它看成一个WPF的跨平台实现,于是就参考了 Xamarin.Forms.Platform.WPF 的代码, 写了一个 Xamarin.Forms.Platform.AvaluoniaUI,由于那是 Avalonia 项目也刚刚创建,很多功能还不完善,Xamarin.Forms.Platform.AvaloniaUI 当时实现的功能也非常有限,而且还有很多BUG, 后来由于忙别的就没怎么太关注过。今年春节,又赶上疫情,“全民闭关”,Avalonia 也趋于成熟,于是把代码进行了大量重构,并且改名为:Xamarin.Forms.Platform.Avalonia
正文:
-
新建一个 Avalonia 项目, 可以阅读后面的链接了解更多:http://avaloniaui.net/docs/quickstart/create-new-project.
-
你可以使用以下命令,在 NuGet 中找到并安装 Xamarin.Forms.Platform.Avalonia:
Install-Package Xamarin.Forms.Platform.Avalonia
- 创建一个 Xamarin.Forms 应用, 可以阅读后面的链接了解更多: at https://docs.microsoft.com/en-us/xamarin/get-started/first-app.
- 将新建的 Xamarin.Forms 应用项目,作为项目引用添加到新建的 Avalonia 项目中.
- 编辑 MainWindow.xaml.cs, 添加命名空间引用:
using Xamarin.Forms.Platform.Avalonia;
- 把 MainWindow 的基类改为 FormsApplicationPage, 同时添加 Forms.Init() 和 LoadApplication() 的方法调用,参见下面示例,代码中的 'FormsGallery.App' 应该是你的 Xamarin.Forms 应用的App的类名:
public class MainWindow : FormsApplicationPage { public MainWindow() { InitializeComponent(); #if DEBUG this.AttachDevTools(); #endif Xamarin.Forms.Forms.Init(); LoadApplication(new FormsGallery.App()); } private void InitializeComponent() { AvaloniaXamlLoader.Load(this); } }
然后运行新建的 Avalonia 项目,你就可以看到你的 Xamarin.Forms 应用跑在 Avalonia 平台上了。