WinUI遷移到即將"過時"的.NET MAUI個人體驗

綠蔭阿廣發表於2022-05-14

遷移的初衷

本人平時是做.net相關的工作,對於.net技術棧也有一些瞭解,自從新的.net能夠跨平臺之後,之前也有跨平臺的ui框架Xamarin,現在微軟推出了.NET MAUI這個說是 統一了開發體驗,而且都RC版本了,所以本人也就想著試試看了,於是就想著把前幾天的WinUI的demo遷移到MAUI上試試看了。

遷移過程

1. VS啟動MAUI開發模組

如圖,下載最新的vs2022預覽版,然後勾選.NET MAUI。

vs-maui

通過安裝這些模組我們就能建立了MAUI的專案了。

2. 建立一個專案

選擇如圖的專案模板。

create-proj

建立完成之後專案結構如下圖。

img

乍一看和普通的wpf或者uwp再或者winui專案差別不大,主要的區別可能就是多一些依賴項為不同的平臺。

3. 確認遷移需要的一些依賴

我之前的WinUI demo用資料儲存是LiteDB,這個支援,那基本上就沒什麼阻礙了,ui顯示的話,需要用MAUI提供的一些控制元件替換掉WinUI裡的控制元件。

MAUI和WinUI的效果對比

img

左邊為MAUI效果,UI其實我是抄了一個dotnet-maui-workshop專案的樣式。右邊就是一個簡單的WinUI控制元件展示。

遷移貌似沒什麼阻礙。

遇到的一些問題

目前在寫這篇文章的時候.NET MAUI已經是RC3了,之前在RC2的時候有個奇怪的問題,就是從LiteDB讀出的流放到圖片展示,windows下是正常,在安卓裝置上就不正常了。所以當時就沒搞了,看了github上的問題區好像是bug,在這個RC3版本修復了,所以在安卓上也能正常顯示了。

效果如下圖

列表頁

img

詳情頁

img

不過好像不推薦用流進行顯示,感覺有的列表如果滾動之後好像流不存在了就會展示異常。估計是我的用法不對了。

還有個比較奇怪的地方就是如下圖的程式碼,在windows上能夠正常生效,但是在安卓上就會失效。

img

整體感覺開發體驗和wpf體驗很像,不過對於一些依賴特定平臺的功能需要大家根據具體的平臺進行實現了。需要大家瞭解一些各平臺的api。

最後的感受

整體的開發方式確實很舒服,從開始的不太適應,到後面覺得還不錯,感覺持續的演進下去會有一個不錯的未來吧。希望更多的人蔘與進來,然後共同完善這個框架。

參考文件和程式碼地址如下

文件的程式碼地址

什麼是 .NET MAUI?

dotnet-maui-workshop

dotnet-podcasts

相關文章