iT邦幫忙

2022 iThome 鐵人賽

DAY 26
0
Mobile Development

Re: 從零改用 .NET MAUI 技術來繼續過去用 Xamarin 技術開發的一個 App : TopStore系列 第 26

EP 26: Implement Add Product and Search for GoodsPage in TopStoreApp

  • 分享至 

  • xImage
  •  

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

在本系列文會利用目前 Visual Studio 內建的專案樣本建立一個初始的 .NET MAUI 專案,並且透過此 .NET MAUI 專案來把 TopStore App 的開發從 Xamairn.Forms 轉換到 .NET MAUI 上進行。

本篇是 Re: 從零改成用 .NET MAUI 技術來繼續過去用 Xamarin 開發的一個 App : TopStore 系列 系列文的 EP26。


繼前一回對 CollectionView 當中對於列表的 UI 呈現與操作的設計完畢後,緊接著來針對整個 GoodsPage 再做一些畫面上的 UI 與操作的調整。

首先,打開 "GoodsPage.xaml" 這個檔案:
01

接著找到 ContentPage 標記與 StackLayout 標記(注意雖然在 .NET MAUI 仍可以繼續沿用 StackLayout 元件,但微軟官方文件建議在 .NET MAUI 當中使用 UI 新設計的 Layout 元件 VerticalStackLayoutHorizontalStackLayout 取代 StackLayout)之間來安插 ToolbarItems 的標記:

<ContentPage.ToolbarItems>
    <ToolbarItem Text="新增" />
</ContentPage.ToolbarItems>

完成的結果如下圖紅框所示:
02-1

再繼續在 StackLayout 的標記下方加入 SearchBar 的標記:

<SearchBar
    Placeholder="請輸入要搜尋的物品名稱..."
    TextChanged="SearchBar_TextChanged"
    TextTransform="Lowercase" />

完成的結果如下圖紅框所示:
02-2

完成的呈現結果如下:
02-3

接著跟之前的 PeoplePage 一樣,在 SearchBar 文字進行改變的時候,需要透過 TextChanged 事件做一些狀況排除,所以開啟 "GoodsPage.xaml.cs" 檔案,會看到已經有自動建立出來的事件處理常式(如果 SearchBar 的 XAML 標記是打字輸入的,會有提醒可自動建立):

private void SearchBar_TextChanged(object sender, TextChangedEventArgs e)
{

}

如下圖紅框所示:
03-1

在此事件處理常式當中,加入以下程式碼:

var vm = BindingContext as ViewModels.GoodsPageViewModel;
if (e.NewTextValue?.Length == 0 && e.OldTextValue?.Length > 0)
{
    vm.SearchCommand.Execute(string.Empty);
}

完成結果如下圖紅框所示:
03-2

再回到 "GoodsPage.xaml" 檔案當中,繼續針對 ToolbarItemSearchBar 編輯 XAML 標記當中的 Command 們的繫結對象。

對於 ToolbarItemCommand 就繫結到先前在 GoodsPageViewModel 中所設計的 Add() 方法(透過 [RelayCommand] 會形成 AddCommand):

Command="{Binding AddCommand}"

完成結果如下圖紅框所示:
04-1

對於 SearchBarSearchCommand 就繫結到先前在 GoodsPageViewModel 中所設計的 Search() 方法(透過 [RelayCommand] 會形成 SearchCommand),並且設定其 SearchCommandParameter 的資料為輸入在 SearchBar 當中的文字:

SearchCommand="{Binding SearchCommand}"
SearchCommandParameter="{Binding Source={RelativeSource Self}, Path=Text}"

完成結果如下圖紅框所示:
04-2

完成的結果如下:

  • 點選 GoodsPage 導覽列左上角的 "新增",會執行 AddCommand 的操作:
    05-1

  • 點選進入 SearchBar 並輸入文字後按下 "Search",會執行 SearchCommand 的操作:
    05-2

  • 搜尋完畢後點選 SearchBar 中的 "清除文字" 會回到原本的 Goods 列表呈現:
    05-3

本 EP 介紹所完成的範例程式碼可在此下載

(此次上傳到 GitHub 的 TopStoreApp 程式碼,在此 "GoodsPage.xaml"StackLayout 已改成 VerticalStackLayout)



上一篇
EP 25: Design the binding of Commands for GoodsPage in TopStoreApp
下一篇
EP 27: Add ProductDetailPage and register to ShellRoute in TopStore
系列文
Re: 從零改用 .NET MAUI 技術來繼續過去用 Xamarin 技術開發的一個 App : TopStore30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言