iT邦幫忙

2023 iThome 鐵人賽

DAY 5
0

Hello, 各位 iT 邦幫忙 的粉絲們大家好~~~

在本系列文會延續 Re: 從零改用 .NET MAUI 技術來繼續過去用 Xamarin 技術開發的一個 App : TopStore 使用 .NET MAUI 技術所建立的 TopStore App ,更新 .NET MAUI 在 .NET 6 轉換到 .NET 7 時所需要調整的部分,並持續地的開發 TopStore App 其他需要的功能。

本篇是 Re: 從零續用 .NET MAUI 技術開發過去的一個 App : TopStore 系列 系列文的 EP05。


以目前完成的部分去建置專案程式碼是可以編譯完成的!
01

可是無論哪個平台的執行都沒有辦法正確顯示所設計的 訂單 畫面~~~
02

別忘記,截至目前為止所撰寫的程式碼,並還沒有把所設計的 OrdersPageViewMode 所建立的物件設定到 OrdersPage 的 BindingContext

所以在上一回的最後還特別提到要在 OrdersPage 當中去撰寫符合 Maui 的 Builder 運用的程式,來正確地把 ViewModel 所建立的物件跟 Page 結合起來。

首先,就先來找到 OrdersPage.xaml.cs 並在原本的建構方法下來增加以下程式碼:

public OrdersPage(ViewModels.OrdersPageViewModel ordersPageViewModel) : this()
{
    BindingContext = ordersPageViewModel;
}

protected override void OnAppearing()
{
    base.OnAppearing();

    var vm = BindingContext as ViewModels.OrdersPageViewModel;
    vm.SummaryOrders = App.DataService.GetSummaryOrders();
}

完成結果如下圖:
03

接著打開 MauiProgram.cs 後,找到原本撰寫的 RegisterAppViewAndViewModels 方法,在其中加入下列程式碼:

builder.Services.AddSingleton<Pages.OrdersPage>();
builder.Services.AddSingleton<ViewModels.OrdersPageViewModel>();

完成結果如下圖:
04

上述做法稱作 DI,在 EP 13: Use Dependency Injection for Views and ViewModels in .NET MAUI 有介紹,在本 EP 就是再次依樣畫葫蘆完成。

如果有需要深入了解的朋友可參考微軟官網介紹:
Microsoft Learn 相依性插入

完成更改後,再重新於各平台編譯執行,即可看到正確的 訂單 頁面顯示:
05

最後再補修正一下~~~

由於 OrderPage 會被使用的方式大概只有 MauiProgram 當中透過 DI 的方式讓 Builder 去使用,不會再透過其他的方式來建立其物件,所以這裡就把 OrderPage 類別當中設計沒有傳參數的預設建構子的存取修飾字改為 private
06

完成~~~


上一篇
EP04
下一篇
EP06
系列文
Re: 從零續用 .NET MAUI 技術開發過去的一個 App : TopStore 系列30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言