WinUI遷移到.NET MAUI個人體驗

遷移的初衷

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

遷移過程

1. VS啟動MAUI開發模塊

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

7a10f44e6f8c6d66a2a80b14bfb40183.png

通過安裝這些模塊我們就能創建了MAUI的項目了。

2. 創建一個項目

選擇如圖的項目模板。

7e03debce4a932d5bb99bf3a4ebb0684.png

創建完成之后項目結構如下圖。

77016a007a7a0d655355cb7eb7cdb746.png

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

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

我之前的WinUI demo用數據存儲是LiteDB,這個支持,那基本上就沒什么阻礙了,ui顯示的話,需要用MAUI提供的一些控件替換掉WinUI里的控件。

MAUI和WinUI的效果對比

530a8ddfe52c412042de834000f5a637.png

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

遷移貌似沒什么阻礙。

遇到的一些問題

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

效果如下圖

列表頁

935eaa5f2eed53a2affcd1a747e27df6.png

詳情頁

8d587d5b1d9f90362c43fa29aeb377d8.png

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

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

dad5d04973734bce7d7ea9021adefc57.png

整體感覺開發體驗和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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/287540.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/287540.shtml
英文地址,請注明出處:http://en.pswp.cn/news/287540.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

祝CSDN2021牛氣沖天祝我也撥云散霧

前言 2020年4月,我寫了一篇用turtle繪制《小清新風格的樹》,反響挺好。現在打算使用turtle修改一下繪制方式,因為線條的繪制太過考慮因素過多,如果使用方塊進行堆疊,繪制出來的形狀可以如馬賽克一樣,既符合…

Android之Only fullscreen opaque activities can request orientation

1 問題 使用透明的activity主題,并且固定了方向,在Android8.0手機上提示錯誤如下 Only fullscreen opaque activities can request orientation 2 解決辦法 簡單粗暴就是去在AndroidManifest.xml文件去掉當前activity配置的里面的橫豎屏方向設置 and…

wamp5.5.12安裝re dis擴展

轉載地址:http://hanqunfeng.iteye.com/blog/1984387 phpredis是個人覺得最好的一個php-redis客戶端,因為其提供的function與redis的命令基本一致,降低的了學習成本,同時功能也很全面。 一。linux安裝方法 phpredis下載地址&#…

java 數組轉bean_json數組轉java對象怎么轉

展開全部首先需要 commons-beanutils jar包,然后轉bean的方法為:62616964757a686964616fe59b9ee7ad9431333363386133/**** Title: transMap2Bean* param:param map* param:param obj* return:void* Description&#x…

FPGA圖案--數字表示(代碼+波形)

在數字邏輯系統,僅僅存在高低。所以用它只代表一個整數數字。并且有3代表性的種類。這是:原碼表示(符號加絕對值值)、反碼表示(加-minus標志)而補碼(符號加補)。這三個在FPGA中都有著廣泛的應用。以下分別討論。1、原碼表示法 原碼表示法是機器數的一種簡…

WPF效果第一百八十四篇之網頁視頻保存

一年一度的小學入學采集開始了;我一朋友很是頭大,他說頭都大了好幾圈了;既要準備各種入學材料又要聽線上專人視頻直播講解;然而在直播結束后,他發現自己仍是一臉疑惑;雖說直播有回訪吧,但是他那蝸牛網速簡直了;這時他場外找我,讓我看能不能給他自己下載一份;1、畢竟第一次,直接…

【遙感數字圖像處理】基礎知識:第一章 緒論

第一章 緒 論 ◆ 課程學習要求 主要教學內容:遙感數字圖像處理的概念和基礎知識,遙感數字圖像的幾何處理,遙感圖像的輻射校正,遙感數字圖像的增強處理,遙感圖像的計算機分類,遙感數字圖像的分析方法&…

Android之Canvas的drawRoundRect()

1 問題 Canvas的drawRoundRect()函數怎么用 public void drawRoundRect(RectF rect, float rx, float ry, Paint paint) 功能:該方法用于在畫布上繪制圓角矩形,通過指定RectF對象以及圓角半徑來實現。float rx:生成圓角的橢圓的X軸半徑 float ry:生成圓角的橢圓的Y軸半徑…

201671010128 2017-10-08《Java程序設計》之Lambda與內部類

一、基本概念 Java Lambda 表達式是 Java 8 引入的一個新的功能,主要用途是提供一個函數化的語法來簡化編碼。Lambda表達式本質上是一個匿名方法。Java Lambda 表達式以函數式接口為應用基。內部類(inner class)是定義在另一個類內部的類。二、幾點注意 使用內部類的…

自定義Git

在安裝Git一節中,我們已經配置了user.name和user.email,實際上,Git還有很多可配置項。 比如,讓Git顯示顏色,會讓命令輸出看起來更醒目: $ git config --global color.ui true這樣,Git會適當地顯…

java抽象方法實例_Java的抽象方法和抽象類實例詳解

本文實例講述了Java的抽象方法和抽象類。分享給大家供大家參考,具體如下:一 點睛抽象方法是只有方法簽名,沒有方法實現的方法。抽象方法和抽象類必須使用abstract修飾符來定義,有抽象方法的類只能被定義為抽象類,抽象類…

[python opencv 計算機視覺零基礎到實戰] 九、模糊

一、學習目標 了解什么是卷積了解模糊的使用方法與應用 如有錯誤歡迎指出~ 二、了解模糊的應用 上一篇:[python opencv 計算機視覺零基礎到實戰] 八、ROI泛洪填充 2.1 了解卷積是什么 在本節中,卷積我們不過多的進行深入講解,我本人對卷積也只是稍…

windows update更新失敗 安全模式進不去

今天一同事的電腦遇到問題了,提示“windows update更新失敗”。最后一次正確配置不行, 安全模式進不去。解決方法:強制關機開機后F8啟動修復模式(系統盤或者pe進入也可以),系統還原,找最后的還原…

windbg的時間旅行實現對 C# 程序的終極調試!

一:什么是時間旅行 簡而言之就是把程序的執行流拍成vlog,這樣就可以對 vlog 快進或者倒退,還可以分享給別人做進一步的分析,是不是想都不敢想。很開心的是 windbg preview 版本中已經實現了,叫做 時間旅行調試 TTD&…

【神經網絡】神經網絡結構在命名實體識別(NER)中的應用

命名實體識別(Named Entity Recognition,NER)就是從一段自然語言文本中找出相關實體,并標注出其位置以及類型,如下圖。它是NLP領域中一些復雜任務(例如關系抽取,信息檢索等)的基礎。…

centos安裝禪道的步驟

1、下載 XAMPP 套件: https://sourceforge.net/projects/xampp/files/XAMPP%20Linux/stats/timeline 下載的文件是 xampp-linux-x64-7.0.6-0-installer.run 2、 執行 ./xampp-linux-x64-7.0.6-0-installer.run 3、 啟動 /opt/lampp/lampp start 4、 下載禪道 ZenTa…

[python opencv 計算機視覺零基礎到實戰] 十、圖片效果毛玻璃

一、學習目標 了解高斯模糊的使用方法了解毛玻璃的圖片效果添加了解如何自己做一個噪聲圖片 上一篇:[python opencv 計算機視覺零基礎到實戰] 九、模糊 如有錯誤歡迎指出~ 二、了解模糊與美顏 2.1 使用高斯模糊降噪 由于很多小伙伴反應拋開原理或理論講解使用用法對于初學…

Android之自定義View實現帶4圓角或者2圓角的效果

1 問題 實現任意view經過自定義帶4圓角或者2圓角的效果 2 原理 1) 實現view 4圓角 我們只需要把左邊的圖嵌入到右邊里面去,最終顯示左邊的圖就行。 2) 實現view上2圓角 我們只需要把左邊的圖嵌入到右邊里面去,最終顯示左邊的圖就行。 安卓源碼里面有這樣的類 package and…

java trim()函數_Java - split()函數和trim()函數的使用方法

split()函數和trim()函數的使用方法本文地址: http://blog.csdn.net/caroline_wendy/article/details/24465141詳細參考Java API: http://docs.oracle.com/javase/6/docs/api/java/lang/String.htmlsplit()函數是依據參數如",", "-", " "等, 切割…