iT邦幫忙

2022 iThome 鐵人賽

DAY 19
0

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

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

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


在前一回設計了 Models 的 Product 類別之後,就可以先來調整 "MockData.cs" 的 MockData 類別,來讓 App 程式執行產生預設的 Goods 資料。

首先打開 "MockData.cs" 檔案:
01

接著加入一個私有且唯讀的欄位 goods:

    private readonly ObservableCollection<Models.Product> goods;

加入後完成結果如下所示:
02

接著在建構方法當中直接 Hard code 產生 5 筆 Product 的資料,存在集合 ObservableCollection 中後設定給 goods 欄位:

        goods = new ObservableCollection<Models.Product>()
        {
            new Models.Product {Id = 1, Sn = "A-0001", Name = "Sample Product A-1" , Images = "tmp.png", Price = 200M, Unit = "包", Msrp = 300M, Package = 12, Note = "There is no Note" },
            new Models.Product {Id = 2, Sn = "A-0002", Name = "Sample Product A-2" , Images = "tmp.png", Price = 50M, Unit = "袋", Msrp = 80M, Package = 3, Note = "There is no Note" },
            new Models.Product {Id = 3, Sn = "B-0001", Name = "Sample Product B-101" , Images = "tmp.png", Price = 60M, Unit = "罐", Msrp = 100M, Package = 1, Note = "There is no Note" },
            new Models.Product {Id = 4, Sn = "B-0002", Name = "Sample Product B-220" , Images = "tmp.png", Price = 180M, Unit = "組", Msrp = 250M, Package = 1, Note = "There is no Note" },
            new Models.Product {Id = 5, Sn = "B-0003", Name = "Sample Product B-300" , Images = "tmp.png", Price = 45M, Unit = "瓶", Msrp = 50M, Package = 5, Note = "There is no Note" },
        };

加入的完成結果如下圖所示:
03

接著其需供操作 Goods 的方法如下程式碼:

    public ObservableCollection<Models.Product> GetGoods(string keyword = "")
    {
        return new ObservableCollection<Models.Product>(goods.Where<Models.Product>((product) => product.Name.ToLower().Contains(keyword.ToLower())));
    }

    public Models.Product GetProduct(int id)
    {
        return goods.FirstOrDefault((product) => { return product.Id == id; });
    }

    public Models.Product NewProduct()
    {
        return new Models.Product() { Id = goods.Last().Id + 1 };
    }

    public int SaveProduct(Models.Product product)
    {
        if (product.Id > goods.Last().Id)
            goods.Add(product);
        return 1;
    }

    public int DeleteProduct(Models.Product product)
    {
        return goods.Remove(product) ? 1 : 0;
    }

加入後完成結果如下所示:
04

理論上 goods 要操作的作法上都跟 people 的操作一樣,所以如果不管程式碼的設計性,撰寫起來是可以很快完成。

不過,這樣 MockData 的程式碼本身就重複了些,可以透過一些設計技巧來重構規劃的。

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



上一篇
EP 18: Create a Product Class in Models for TopStoreApp
下一篇
EP 20: Add methods to IDataService and implement it in DbService - I
系列文
Re: 從零改用 .NET MAUI 技術來繼續過去用 Xamarin 技術開發的一個 App : TopStore30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言