使用 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 60天 100% 滿意保證
在購買後的 60 天內,您可以透過 兩次點擊 獲得任何 Leanpub 購買項目的 100% 退款。
技術上來說,這對我們是有風險的,因為無論如何您都會擁有書籍或課程檔案。但我們對我們的產品和服務,以及我們的作者和讀者都充滿信心,因此我們很樂意為所有銷售的內容提供全額退款保證。
只有親自嘗試才能知道某樣東西是否真的好,而且因為我們提供 100% 退款保證,所以這完全沒有風險!
所以,還有什麼理由不點擊「加入購物車」按鈕呢?
查看完整條款...
在10美元的購買中賺取8美元,在20美元的購買中賺取16美元
對於7.99美元或以上的購買,我們支付80%版稅,對於0.99至7.98美元之間的購買,我們支付80%版稅減去0.50美元固定費用。在10美元的銷售中您可賺取8美元,在20美元的銷售中可賺取16美元。因此,如果我們以20美元售出5000本不退款的圖書,您將賺取80,000美元。
(是的,一些作者在Leanpub上已經賺取了遠超過這個數額的收入。)
事實上,作者們通過在Leanpub上寫作、出版和銷售已經賺取了超過1400萬美元。
了解更多關於在Leanpub上寫作的信息
免費更新。無 DRM 限制。
當您購買 Leanpub 的書籍時,只要作者更新書籍內容,您就能永久免費獲得更新!許多作者在寫作過程中會使用 Leanpub 發布他們的在製書籍。所有讀者都能獲得免費更新,無論他們何時購買書籍或支付多少金額(包括免費)。
大多數 Leanpub 書籍提供 PDF(適用於電腦)和 EPUB(適用於手機、平板電腦和 Kindle)格式。在本頁面右上角會顯示該書提供的格式。
最後,Leanpub 的書籍沒有任何 DRM 複製保護機制,因此您可以在任何支援的設備上輕鬆閱讀。