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 系列 系列文的 EP19。
上一回 EP18 介紹到透過 OrdersPage 的 "新增",開始新增訂單而進入而 "聯絡人列表" 時,需要把下方的分頁頁籤給 "隱藏"。
若只是要單純隱藏下方的分頁頁籤的這部分其實不難,只要找到 PeoplePage 並在其 ContnetPage 的標記中,增加以下設定:
Shell.TabBarIsVisible="False"
即可隱藏分頁頁籤,如下圖:
但要考慮的是在非 "下訂單" 的狀況下,"聯絡人列表" 下方的分頁頁籤就不需 "隱藏",因此設定值會有可能不同的設定機會,以下就來調整一下吧!
在 Utilities 的 ValueConverter 底下增加一個 BoolReverseValueConverter 的類別設計,其中的類別程式碼如下:
using System.Globalization;
namespace TopStoreApp.Utilities.ValueConveters;
public class BoolReverseValueConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
return !(bool)value;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return !(bool)value;
}
}
完成結果如下圖:
接著找到先前在 App.xaml 當中設計的 valueconveters:BoolToTwoStringValueConverter
並在其後再增加一個 Resource 的宣告:
<valueconveters:BoolReverseValueConverter x:Key="BoolReverseValueConverter" />
完成結果如下圖:
回到 PeoplePage 將前述 ContnetPage 標記的 Shell.TabBarIsVisible
設定值改成如下:
Shell.TabBarIsVisible="{Binding IsOrder, Converter={StaticResource BoolReverseValueConverter}}"
完成結果如下圖:
接著找到 ViewModels 當中的 PeoplePageViewMode,並幫其設計增加接收參數與設定的 IsOrder 屬性。
增加路由參數處理:
[QueryProperty(nameof(IsOrderQueryString), "isOrder")]
增加可繫結屬性:
[ObservableProperty]
private bool _isOrder;
public string IsOrderQueryString
{
set
{
IsOrder = bool.Parse(value);
}
}
完成結果如下圖:
即可達成本 EP 要完成的目的了唷~~~
看看以下的呈現結果: