Hello, 各位 iT 邦幫忙 的粉絲們大家好~~~
在本系列文會利用目前 Visual Studio 內建的專案樣本建立一個初始的 .NET MAUI 專案,並且透過此 .NET MAUI 專案來把 TopStore App 的開發從 Xamairn.Forms 轉換到 .NET MAUI 上進行。
本篇是 Re: 從零改成用 .NET MAUI 技術來繼續過去用 Xamarin 開發的一個 App : TopStore 系列 系列文的 EP16。
本回要繼續使用 CommunityToolkit.Mvvm
這套件,透過該套件其中所實作 INotifyPropertyChanged
這個 interface
的 INotifyPropertyChangedAttritube
類別來搭配調整其設計。
由於要在 TopStoreApp 的這個 .NET MAUI 專案當中全面改用 "CommunityToolkit.Mvvm" 這個 Nuget 套件所提供的類別庫,並把從 Xamarin.Forms 轉換為 .NET MAUI 的過渡時期所使用的 "Maui.Plugin.BaseBindingLibrary" (雖然是自己寫的...QQ) 這個 Nuget 套件給移除。
因此修改在 TopStoreApp 專案中 Models 資料夾所設計的 Person 類別,就是必須的了。
首先,開啟位在 Models 資料夾底下的 "Person.cs" 檔案:
注意到 Person
類別所繼承的類別 Maui.Plugin.BaseBindingLibrary.BaseNotifyProperty
:
並且將 Person 類別所繼承的類別移除(在下圖藍色框當中用註解表示):
接著在類別宣告簽章處加上 partial
關鍵字:
接著在類別宣告的上方掛上 [INotifyPropertyChanged]
的 Attritube
(如下圖紅框所示) 的同時 Visual Studio 2022 應該會自動協助加入 using CommunityToolkit.Mvvm.ComponentModel;
的命名空間引用處理(如下圖黃框所示):
同時注意到先前所設計的屬性 Name
將其 set 當中所呼叫的方法由 OnPropertyChanged 改為 SetProperty(如下圖紅框所示):
其餘的 Tel
、Email
、Address
屬性也都是如此(如下圖紅框所示):
這裡注意在 Person
類別當中所設計的 Id
屬性不需做任何變動。
到這邊 Person
類別修正完畢!
接著就在專案上透過右鍵選單,點選 "管理 nuget 套件":
在 "已安裝" 的分頁下找到 "Maui.Plugin.BaseBindingLibrary" 這個 Nuget 套件,點選 "解除安裝":
點選 "OK":
"已安裝" 的分頁下沒有 "Maui.Plugin.BaseBindingLibrary" 這個 Nuget 套件,確認移除完畢:
完成後 "重建" 此專案:
最後在 Visual Studio 2022 的左下角會顯示 "全部重建成功":
完成後,也能執行測試看看,所有在 TopStoreApp 已完成的功能都能正常運作沒問題唷!
本 EP 介紹所完成的範例程式碼可在此下載。