使用 Prism 進行 .NET MAUI 專案開發
使用 Prism 進行 .NET MAUI 專案開發
動手練習系列叢書
關於本書
關於本書
.NET MAUI 多平臺應用程式 UI (是 Multi-platform App UI 的縮寫) 是一種跨平臺架構,可用於使用 C# 和 XAML 建立原生行動和傳統型應用程式。 .NET MAUI 的專案採用了單一專案方式,便可以產生出 Android, iOS, macOS Catalyst, WinUI3 等不同作業系統平台上可以執行的應用程式,而這個 .NET MAUI 工具也可以視為 Xamarin.Forms 的繼承者,也就是說,.NET MAUI 是由 Xamarin.Forms 進化而來的全新開發跨平台工具。
之前在網路上看到 微軟 James Montemagno 寫的 .NET MAUI - Workshop 文章與專案程式碼 與 Learn .NET MAUI - Full Course for Beginners | Build cross-platform apps in C# Youtube 實際專案開發教學影片,讓我深深地覺得這是一份相當好的教學教材內容,它包含了靜態的文字說明與各個練習階段所開發出來的專案原始碼,有提供了長達四個小時的開發過程說明教學影片,讓任何想要理解與學習使用 .NET MAUI 工具來進行跨平台開發的人,可以有個很好的進入點。
在 James 所寫的文章與影片中,採用的是 .NET MAUI Shell 與 CommunityToolkit.Mvvm 這個工具來進行開發行動裝置應用專案的開發,其中前者 .NET MAUI Shell 在官方文章中有指出 : .NET MAUI Shell 提供大部分應用程式所需的基本功能,以減少應用程式開發的複雜度,包括:描述應用程式視覺階層的單一位置、常見的導覽使用者體驗、URI 型流覽配置,允許流覽至應用程式中的任何頁面、整合式搜尋處理常式。對於第一次接觸 .NET MAUI 的開發者,可以透過 Shell 提供的相關 UI 設計機制與功能,快速開發出想要的應用程式。
而對於 CommunityToolkit.Mvvm 而言,則扮演了另外一個重要的角色,這是因為 .NET MAUI 這個專案開發,採用的 MVVM Model-View-ViewModel 的設計模式來進行開發,第一個 Model 通常為一個 .NET C# 內的 POCO 類別,而 View 則是為採用 XAML (XAML Extensible Application Markup Language 發音為 /ˈzæməl/ 是一種宣告式的標記語言)來進行要顯示在畫面上的 UI 內容宣告與定義,而對於這個頁面上的相關商業邏輯部分,則是會寫在一個 .NET C# 類別內,該類別也稱之為 ViewModel (該類別需要實作 INotifyPropertyChanged 介面)。
如此,View 與 ViewModel 之間便可以透過 Data Binding 資料綁定(繫結) 的方式整合再一起,讓 UI 與 商業邏輯程式碼部分可以做到鬆散耦合的設計,形成關注點分離的方式,讓這個專案可以好維護與方便進行測試;由於要自行手作寫出具有資料綁定規範的程式碼,說實在的有些繁瑣,因此,CommunityToolkit.Mvvm 這個套件扮演了重要的角色,他透過原始碼產生器的功能,自動產生出許多原本需要開發者自行設計的程式碼,並且滿足資料綁定程式碼設計的要求,簡化整體程式碼設計過程與數量,讓整體原始碼看起來相當的清爽與簡潔。
因此, James 充分的發揮 .NET MAUI Shell 與 CommunityToolkit.Mvvm 的強大功能與特色,設計出這樣的動手實作練習教材,透過自己動手練習與開發,實際完成一個使用 .NET MAUI 開發出來的專案,間接地也學會如何使用 .NET MAUI 來開發跨平台專案的技能。
作者早年在進行 Xamarin.Forms 專案開發與教學課程的時候,就習慣使用 Prism 這個開發框架類別庫,Prism 是一個開發框架,讓所開發的專案可以採用與開發出具有鬆散耦合、可維護性與可測試性的能力,這些類型的專案包含了 WPF, Xamarin.Forms, .NET MAUI,這個套件是相當的好用與方便,可以快速地進行各種類型的專案開發,並且對於上面提到的一個資料綁定設計上的問題,那就是要自己手作寫出很多相同的程式碼問題,之前是使用了 PropertyChanged.Fody 這個套件來解決此一問題,該套件使用的手法與 CommunityToolkit.Mvvm 做法不同,並不是使用原始碼產生器來產生出許多原始碼來解決問題,而是透過注入程式碼的方式,讓有實作 INotifyPropertyChanged 介面的類別,可以有正常運作的程式碼存在。
因此,作者想要使用 .NET MAUI + Prism.Maui + PropertyChanged.Fody 這三項工具,同樣的可以設計出如同 James 文章或者影片中的跨平台應用程式結果,所以,便會有這本書的誕生,因為,作者想要推廣 .NET MAUI 這個開發工具,所以,將這本動手學習的電子書定價為免費,希望有更多從事 .NET C# 開發者,可以有機會學習到這麼優秀的開發工具。
這本 “使用 Prism 進行 .NET MAUI 專案開發” 這是一本對於初學者與入門者,想要學習如何使用 .NET MAUI 來進行跨平台應用程式開發的必須要閱讀過的一本書籍。在這本電子書中,將從無到有的說明如何開發出跨平台的應用程式,將會從如何安裝與設定開發環境開始,因為這是一本定位為入門等級的書籍,因此,在書中將會有著操作畫面截圖,可以讓讀者清楚的知道每個步驟是如何設計出來的。接下來將會說明與使用 Prism.Maui 這個開發框架來進行開發 .NET MAUI 的應用程式。
本書內容屬於動手實作系列,也就是說,期望讀者可以按照這本書上的說明與操作步驟,逐一進行開發與設計,並且試圖邊做邊解決問題,當然,在這本書中會列出更多的技術參考來源連結,可以針對這些文章來強化對於 .NET MAUI 這個 UI 開發工具的相關專業知識。
目錄
- 1. 前言
-
2. 關於本書
- 2.1 這本書能提供什麼
- 2.2 誰適合閱讀這本書
- 2.3 練習專案原始碼
- 2.4 關於作者
-
3. .NET MAUI 開發環境的安裝與設定
- 3.1 安裝 Hyper-V 管理員
- 3.2 安裝 Visual Studio 2022 開發工具
- 3.3 啟動、測試和設定開發環境
- 3.4 建立 Android 模擬器與實際體驗執行過程
-
3.5 了解 MAUI 專案的結構
- 3.5.1 Android 平台的進入點程式碼
- 3.5.2 iOS 平台的進入點程式碼
- 3.5.3 MacCatalyst 平台的進入點程式碼
- 3.5.4 Tizen 平台的進入點程式碼
- 3.5.5 Windows 平台的進入點程式碼
- 3.5.6 MauiProgram.cs
- 3.6 開始執行 Maui 應用程式
- 3.7 安裝 Prism Template 來建立 MAUI 應用程式
- 3.8 建立一個可以支援 Prism 開發框架的 MAUI 專案
-
4. 建立專案與核心服務
- 4.1 建立 Prism.Maui 專案
- 4.2 了解 MAUI 專案結構 Todo
- 4.3 初次體驗在 Android 平台執行專案
-
4.4 安裝相關 NuGet 套件
- 4.4.1 加入 PropertyChanged.Fody 的 NuGet 套件
- 4.4.2 加入 Newtonsoft.Json 的 NuGet 套件
- 4.4.3 檢查這個專案內安裝了那些 NuGet 套件
- 4.5 建立方案資料夾
- 4.6 建立 資料模型 Model 類別
- 4.7 建立 服務 Service 類別與註冊該服務
- 4.8 建立 支援 Helper 類別
- 4.9 完成後的專案結構
-
5. 顯示單頁面的集合清單資料
- 5.1 建立新的猴子清單頁面 View
- 5.2 建立新的猴子清單頁面檢視類別 ViewModel
- 5.3 註冊該頁面 View 與 ViewModel 到相依性注入容器內
- 5.4 修正這個 MAUI 專案的第一個頁面為猴子清單頁面
- 5.5 進行猴子清單頁面的 ViewModel 設計
- 5.6 進行猴子清單頁面的 View 設計
- 5.7 在 Android 平台執行專案
- 5.8 修正無法執行的錯誤
- 5.9 再次進行在 Android 平台執行專案
-
6. MVVM 與 Data Binding 資料綁定
-
6.1 透過手做設計來體驗 INotifyPropertyChanged 運作方式與注意事項
- 6.1.1 實作 INotifyPropertyChanged 介面
-
6.2 使用 PropertyChanged.Fody 套件,大幅簡化屬性變更通知程式設計碼
- 6.2.1 建立新專案
- 6.2.2 加入 PropertyChanged.Fody 的 NuGet 套件
- 6.2.3 使用 PropertyChanged.Fody 提供功能來設計具有屬性變更通知的 Person 類別
- 6.2.4 確認採用 PropertyChanged.Fody 套件的設計是否可正常運作
-
6.1 透過手做設計來體驗 INotifyPropertyChanged 運作方式與注意事項
-
7. 頁面導航 Navigation 與參數傳遞
- 7.1 建立新的猴子明細 頁面 View
- 7.2 建立新的猴子明細 檢視類別 ViewModel
- 7.3 註冊該頁面 View 與 ViewModel 到相依性注入容器內
- 7.4 進行猴子清單頁面的 ViewModel 設計
- 7.5 進行猴子清單頁面的 View 設計
- 7.6 修正點選猴子清單 ViewModel,加入可以導航到猴子明細頁面的程式碼
- 7.7 修正點選猴子清單頁面,可以導航到猴子明細頁面
- 7.8 在 Android 平台執行專案
-
8. 平台特性 Platform Feature 設計
- 8.1 對相依性注入容器宣告要註冊 地理位置 服務
- 8.2 修正 Android 需要使用定位權限
-
8.3 找出離你最近的猴子 : 修正 ViewModel
- 8.3.1 宣告要注入的 地理位置 欄位
- 8.3.2 在建構式來注入 地理位置 服務物件
- 8.3.3 建立一個命令物件,用於執行找出最近猴子的程式碼
- 8.3.4 設計找出最近猴子的商業邏輯方法
- 8.3.5 在建構式內,為 GetClosestMonkeyCommand 物件進行初始化
- 8.4 找出離你最近的猴子 : 修正 View
- 8.5 在 Android 平台執行專案
- 8.6 對相依性注入容器宣告要註冊 地圖 服務
-
8.7 顯示猴子所在地地圖 : 修正 ViewModel
- 8.7.1 宣告要注入的 地理位置 欄位
- 8.7.2 在建構式來注入 地理位置 服務物件
- 8.7.3 建立一個命令物件,用於執行顯示猴子所在地地圖的程式碼
- 8.7.4 在建構式內,為 GetClosestMonkeyCommand 物件進行初始化
- 8.8 顯示猴子所在地地圖 : 修正 View
- 8.9 在 Android 平台執行專案
-
9. 其他集合檢視 CollectionView 下拉更新設計
- 9.1 在 ViewModel 建立用於資料綁定的屬性
- 9.2 在 View 加入可以偵測手勢下拉更新的控制項
- 9.3 在 Android 平台執行專案
-
10. UI 美化之集中管理設計與主題佈景 Theme
- 10.1 建立新的樣式資源檔案
- 10.2 宣告要使用這個新的 XAML 資源檔案
- 10.3 修正猴子清單頁面套用樣式
- 10.4 在 Android 平台執行專案
- 10.5 修正猴子明細頁面套用樣式
- 10.6 在 Android 平台執行專案
- 10.7 測試 前色與深色主題佈景
- 11. 版權頁
關於出版社
This book is published on Leanpub by Ministep Books
Leanpub 100% 無風險的滿意保證
在付款後的 60 天內,只要點擊兩下,你就可以退書並獲得全額退款。退書是手工操作的,所以可能需要幾天時間來完成整個過程。
查看完整條款.
在$10的購買中賺$8,在$20的購買中賺$16
我們在$7.99或以上的購買中支付80%的版稅,並在$0.99至$7.98的購買中支付80%的版稅減去50美分的固定費用。在$10的銷售中賺$8,在$20的銷售中賺$16。因此,如果我們以$20銷售5000本未退款的書,您將賺取$80,000。
(是的,一些作者已經在Leanpub上賺了很多錢。)
實際上,作者在Leanpub上賺取了超過1300萬美元通過寫作、出版和銷售。
了解更多關於Leanpub寫作的信息
免費更新。無 DRM 限制。
如果你購買了 Leanpub 的書,只要作者更新書籍,你就可以獲得免費更新!許多作者使用 Leanpub 來發布他們正在編寫的書籍。所有讀者都可以獲得免費更新,無論他們何時購買書籍或支付了多少費用(包括免費)。
大多數 Leanpub 書籍均提供 PDF(適用於電腦)、EPUB(適用於手機和平板電腦)和 MOBI(適用於 Kindle)格式。書籍包含的格式將顯示在此頁面的右上角。
最後,Leanpub 書籍沒有任何 DRM 複製保護的胡說,因此你可以輕鬆地在任何支持的設備上閱讀它們。