遷移的初衷
本人平時是做.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