iT邦幫忙

2023 iThome 鐵人賽

DAY 21
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 系列 系列文的 EP21。


在前一回 EP18 當中,要 PeoplePage 點選 "下訂單" 按鈕時,讓轉跳路由所取得的 PersonId 在 GoodsPageViewModel 當中接收下來。

所以持續在 GoodsPageViewModel 當中來幫其設計增加接收參數與設定的 PersonId 屬性。

增加路由參數處理:

[QueryProperty(nameof(PersonIdQueryString), "personId")]

增加可繫結屬性:

[ObservableProperty]
private string _personId;

public string PersonIdQueryString
{
    set
    {
        PersonId = value;
    }
}

補充:
由於 GoodsPage 本身沒有要 Binding 此 PersonId 做為畫面顯示使用,所以其實可以不用設計成 ObservableProperty

完成結果如下圖:
01

而當 "下訂單" 流程到 "物品項列表" 後,當選取了某一項物品時,轉跳到物品詳細資訊頁面的部分,由於跟先前制定的轉跳路由不同,仍需再調整處理。

繼續在 GoodsPageViewModel 當中找到 Edit 方法,把原本轉跳的程式註解,並加入下列程式:

var routing = $"{Shell.Current.CurrentState.Location}/ProductDetail?isEdit=false&productId={product.Id}";
routing = IsOrder ? $"{routing}&personId={PersonId}&isOrder=true" : routing;
await Shell.Current.GoToAsync(routing);

完成結果如下圖:
02

同樣的轉跳進入到 ProductDetail 的路由也要在 AppShell.xaml.cs 的建構式中註冊:

  Routing.RegisterRoute("Orders/People/Goods/ProductDetail", typeof(Pages.ProductDetailPage));
  Routing.RegisterRoute("People/Goods/ProductDetail", typeof(Pages.ProductDetailPage));

完成結果如下圖:
03

ProductDetail 的顯示在 "下訂單" 狀態下也要隱藏下方的頁籤選項,這邊的處理就都跟先前的做法雷同。

將 ProductDetailPage 的 ContnetPage 標記增加 Shell.TabBarIsVisible 設定值:

Shell.TabBarIsVisible="{Binding IsOrder, Converter={StaticResource BoolReverseValueConverter}}"

完成結果如下圖:
04

找到 ViewModels 底下的 ProductDetailViewModel 增加接收參數與設定的 IsOrder 屬性:

增加路由參數處理:

[QueryProperty(nameof(IsOrderQueryString), "isOrder")]

增加可繫結屬性:

[ObservableProperty]
private string _isOrder;

public string IsOrderQueryString
{
    set
    {
        IsOrder = value;
    }
}

完成結果如下圖:
05

上述完成後,若由發動 "下訂單" 的方式進入到 ProductDetail 就呈現如下:
06-Android

而 ProductDetail 還需要再做一些顯示上的調整,就留待下回 EP 繼續介紹吧~~~


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

尚未有邦友留言

立即登入留言