就像文章標題說的我是打算寫一篇從UWP移植到WinUI的帖子,本來打算是想寫一篇WinUI的學習帖子,可是覺得市面上UWP的教程WPF的教程都是很多了,所以干脆就直接硬懟專案吧,先宣告我不是來挖UWP的墳墓的,
話不多說,我是拿第三方的嗶哩作為練手專案的,之所以選這個,大家也應該知道,云之幻做的UWP應用顏值也算是上層了,而且他的專案都做了很多的自定義的樣式,剛好可以測驗WinUI的兼容程度,看微軟現在的意思好像對桌面版情有獨鐘,于是我就先用WinUI桌面版練手了,先上專案地址,
云之幻的原倉庫
我移植的倉庫
我主要做了哪些事情呢,首先我將uwp涉及的很多的訪問網路的服務改成了介面,然后通過.net 自帶的DI容器進行管理,用了asp.net core的同志肯定對自帶的依賴注入不陌生,本來想把實作也改掉的,想著用.net的api寫一遍,但是發現涉及的服務太多了,就放棄了,服務對應的介面如下圖所示:

然后通過依賴注入管理服務,繼續上圖:

整體的首頁對比圖:

說說一些注意事項:
-
第一 應用啟動默認是采用像WPF那樣的視窗,而不是像UWP那樣的Page,于是我就通過改造啟動方法,將第一個頁面換成了Page,然后就可以愉快的像用UWP那樣操作了,具體的如下圖所示:

-
第二 如果你的UWP應用樣式里使用了很多的CustomResource,請記得在WinUI里面進行刪掉,因為我在測驗的時候如果不刪掉,會提示xaml格式錯誤,所以大家一定要記得刪掉,或者說大家如果找出解決辦法,也可以分享下,還有就是比如xaml里的color和font相關的一些結構體,目前好像還沒遷移到Microsoft命名空間下,所以有時候需要單獨引一下命名空間,
-
第三 關于應用的彈出層,目前我遇到的彈出層主要包括Content dialog 和那個popup,這個彈出的時候都要設定XamlRoot才能正常彈出,我理解的意思大概就是可能需要設定從誰那開始彈出的吧,需要一個參考關系吧,如圖,
Content dialog的彈出

popup的彈出

如果你有UWP和WPF的一點基礎,學習WinUI其實只需要看看官方的檔案就行了,如果你真的想學WinUI,就看看我的練習倉庫的代碼吧,
WinUI的學習筆記
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/282860.html
標籤:.NET技术
上一篇:c#使用Aspose列印檔案
