2022年8月11日 星期四

在 .NET MAUI 專案下,使用 LiveCharts2 套件,產生統計圖形

在 .NET MAUI 專案下,使用 LiveCharts2 套件,產生統計圖形

今天在 Twitter 上看到一個訊息,提到有個 LiveChart 元件,可以產生出統計圖形,並且是支援 .NET MAUI 開發平台的,覺得這樣的套件相當有趣與實用,因此,想說能否在 Prism.Maui 支援的環境下來使用,因此,就來進行測試,覺得效果相當的不錯。

建立 Prism.Maui 專案

  • 開啟 Visual Studio 2022 Preview 版本

  • 點選螢幕右下角的 [建立新的專案] 按鈕

  • 切換右上角的 [所有專案類型] 下拉選單控制項

  • 找到並且點選 [MAUI] 這個選項

  • 從清單中找到並選擇 [Prism .NET MAUI App (Dan Siegel)] 這個專案範本

    A project for creating a Prism .NET MAUI application for iOS, Android, Mac Catalyst, WinUI and Tizen

  • 點選右下角的 [下一步] 按鈕

  • 當出現了 [設定新的專案] 對話窗

  • 在 [專案名稱] 欄位內,輸入 mauiLiveChart

  • 點選右下角的 [建立] 按鈕

安裝相關 NuGet 套件

加入 PropertyChanged.Fody 的 NuGet 套件

  • 滑鼠右擊該專案的 [相依性] 節點
  • 從彈出功能表中選擇 [管理 NuGet 套件] 功能選項
  • 此時,[NuGet: PrismMonkey] 視窗將會出現
  • 點選 [瀏覽] 標籤頁次
  • 在左上方的搜尋文字輸入盒內輸入 PropertyChanged.Fody 關鍵字
  • 現在,將會看到 PropertyChanged.Fody 套件出現在清單內
  • 點選這個 PropertyChanged.Fody 套件
  • 點選右上方的 [安裝] 按鈕,安裝這個套件到這個專案內。

加入 LiveChartsCore.SkiaSharpView 的 NuGet 套件

  • 滑鼠右擊該專案的 [相依性] 節點
  • 從彈出功能表中選擇 [管理 NuGet 套件] 功能選項
  • 此時,[NuGet: PrismMonkey] 視窗將會出現
  • 點選 [瀏覽] 標籤頁次
  • 在左上方的搜尋文字輸入盒內輸入 LiveChartsCore.SkiaSharpView 關鍵字
  • 現在,將會看到 PropertyChanged.Fody 套件出現在清單內
  • 點選這個 PropertyChanged.Fody 套件
  • 點選右上方的 [安裝] 按鈕,安裝這個套件到這個專案內。

修正 MainPageViewModel

  • 在專案下,找到 [ViewModels] 資料夾
  • 找到並打開 [MainPageViewModel.cs] 檔案
  • 使用底下程式碼替換掉這個檔案內容
namespace mauiLiveChart.ViewModels;

using System.Collections.ObjectModel;
using System.ComponentModel;
using LiveChartsCore;
using LiveChartsCore.SkiaSharpView;
using Prism.Events;
using Prism.Navigation;
using Prism.Services;
public class MainPageViewModel : INotifyPropertyChanged, INavigationAware
{
    public event PropertyChangedEventHandler PropertyChanged;

    private readonly INavigationService navigationService;
    public ObservableCollection<ISeries> Series { get; set; } =
        new ObservableCollection<ISeries>();
    public MainPageViewModel(INavigationService navigationService)
    {
        this.navigationService = navigationService;

    }

    public void OnNavigatedFrom(INavigationParameters parameters)
    {
    }

    public void OnNavigatedTo(INavigationParameters parameters)
    {
        Series.Add(new PieSeries<double> { Values = new double[] { 2 } });
        Series.Add(new PieSeries<double> { Values = new double[] { 4 } });
        Series.Add(new PieSeries<double> { Values = new double[] { 1 } });
        Series.Add(new PieSeries<double> { Values = new double[] { 4 } });
        Series.Add(new PieSeries<double> { Values = new double[] { 3 } });
    }

}

在這個 ViewModel 內,宣告了一個 ObservableCollection<ISeries> Series { get; set; } 屬性,這裡將會要來產生這個圓餅圖需要用到的數據。

一旦這個頁面顯示之後,將會觸發與執行 OnNavigatedTo 這個方法,因此,在這裡進行這個圓餅圖要顯示相關數據資訊。

修正 MainPage

  • 在專案下,找到 [Views] 資料夾
  • 找到並打開 [MainPage.xaml] 檔案
  • 使用底下 XAML 標記替換掉這個檔案內容
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             Title="LiveChart2"
             xmlns:local="clr-namespace:mauiLiveChart.ViewModels"
             xmlns:lvc="clr-namespace:LiveChartsCore.SkiaSharpView.Maui;assembly=LiveChartsCore.SkiaSharpView.Maui"
             x:DataType="local:MainPageViewModel"
             x:Class="mauiLiveChart.Views.MainPage">

  <Grid BackgroundColor="White">
    <Label Text="Hello LiveChart2"
           Margin="10"
           FontSize="30"/>
    <lvc:PieChart
      Series="{Binding Series}">
    </lvc:PieChart>
  </Grid>
  
</ContentPage>

在這個 XAML 頁面內,僅簡單的加入兩個檢視控制項,一個 Label ,這個僅僅是用來標示用的,另外一個才是重點,一個 PieChart 檢視,用來顯示圓餅圖之用

進行測試與察看結果

  • 點選中間上方工具列的 [Windows Machine] 這個工具列按鈕旁的下拉選單三角形

  • 從彈出功能表中,找到 [Android Emulators] 內的任何一個模擬器

  • 接者,開始執行這個專案,讓他可以在 Android 模擬器出現

  • 此時,終於可以看到 [LiveChart2] 這個頁面了

若再 Android 進行開發與測試,若發現到無法看到上面的圓餅圖形,可以嘗試關閉 XAML 熱重載機制,請使用底下說明來關閉

  • 在功能表中,點選 [工具] > [選項]
  • 當 [選項] 對話窗出現之後
  • 點選 [偵錯] > [XAML 熱重新載入]
  • 取消 [啟用 XAML 熱重新載入] 這個檢查盒設定

再次重新執行,就會看到了 





沒有留言:

張貼留言