迁移的初衷
本人平时是做.net相关的工作,对于.net技术栈也有一些了解,自从新的.net能够跨平台之后,之前也有跨平台的ui框架Xamarin,现在微软推出了.NET MAUI这个说是 统一了开发体验,而且都RC版本了,所以本人也就想着试试看了,于是就想着把前几天的WinUI的demo迁移到MAUI上试试看了。
迁移过程
1. VS启动MAUI开发模块
如图,下载最新的vs2022预览版,然后勾选.NET MAUI。
通过安装这些模块我们就能创建了MAUI的项目了。
2. 创建一个项目
选择如图的项目模板。
创建完成之后项目结构如下图。
乍一看和普通的wpf或者uwp再或者winui项目差别不大,主要的区别可能就是多一些依赖项为不同的平台。
3. 确认迁移需要的一些依赖
我之前的WinUI demo用数据存储是LiteDB,这个支持,那基本上就没什么阻碍了,ui显示的话,需要用MAUI提供的一些控件替换掉WinUI里的控件。
MAUI和WinUI的效果对比
左边为MAUI效果,UI其实我是抄了一个dotnet-maui-workshop项目的样式。右边就是一个简单的WinUI控件展示。
迁移貌似没什么阻碍。
遇到的一些问题
目前在写这篇文章的时候.NET MAUI已经是RC3了,之前在RC2的时候有个奇怪的问题,就是从LiteDB读出的流放到图片展示,windows下是正常,在安卓设备上就不正常了。所以当时就没搞了,看了github上的问题区好像是bug,在这个RC3版本修复了,所以在安卓上也能正常显示了。
效果如下图
列表页
详情页
不过好像不推荐用流进行显示,感觉有的列表如果滚动之后好像流不存在了就会展示异常。估计是我的用法不对了。
还有个比较奇怪的地方就是如下图的代码,在windows上能够正常生效,但是在安卓上就会失效。
整体感觉开发体验和wpf体验很像,不过对于一些依赖特定平台的功能需要大家根据具体的平台进行实现了。需要大家了解一些各平台的api。
最后的感受
整体的开发方式确实很舒服,从开始的不太适应,到后面觉得还不错,感觉持续的演进下去会有一个不错的未来吧。希望更多的人参与进来,然后共同完善这个框架。
参考文档和代码地址如下
文档的代码地址:https://github.com/GreenShadeZhang/dotnet-maui-tutorial-code
什么是 .NET MAUI?:https://docs.microsoft.com/zh-cn/dotnet/maui/what-is-maui
dotnet-maui-workshop:https://github.com/dotnet-presentations/dotnet-maui-workshop
dotnet-podcasts:https://github.com/microsoft/dotnet-podcasts