定義圖形的序列點 CartesianChart.Series property 型別為 IEnumerable<ISeries>,在當前的版本中 XY 座標系可使用的 Series 有以下幾種:Line series (折線圖)、Column series (長條圖)、Scatter series (散布圖)、Step line series (階梯圖)、Heat Series (熱圖)、Candle sticks series (K線圖)、Stacked line series (堆疊折線圖)、Stacked column series (堆疊長條圖)、Stacked step line series (堆疊階梯圖)。有點讓我意外的是原有的 OHLC series (開高低收圖,另稱美國線) 居然不見了,不過現在還是 beta,也許到了正式版會出現。
以下來個範例玩玩看,首先建立好 View Model:
public class MainViewModel : NotifyPropertyBase
private ObservableCollection<ISeries> _series;
private ObservableCollection<Axis> _xAxes;
private ObservableCollection<Axis> _yAxes;
public ObservableCollection<ISeries> Series
get => _series;
set => SetProperty(ref _series, value);
public ObservableCollection<Axis> XAxes
get => _xAxes;
set => SetProperty(ref _xAxes, value);
public ObservableCollection<Axis> YAxes
get => _yAxes;
set => SetProperty(ref _yAxes, value);
public MainViewModel()
Series = new ObservableCollection<ISeries>
new ColumnSeries<int> {Values = new ObservableCollection<int> { 100, 150, 210, 350, 220, 180 } },
XAxes = new ObservableCollection<Axis>
new Axis
Labels =new ObservableCollection<string> { "魯夫", "索隆" , "香吉士", "娜美", "羅賓", "喬巴" },
LabelsPaint = new SolidColorPaint
Color = SKColors.Black ,
SKTypeface = SKFontManager.Default.MatchCharacter ('繁'),
YAxes = new ObservableCollection<Axis>
new Axis{ Labeler = (x) => $"{x:C}" },
}
這邊有幾件事情要解釋:
View Model 中的 XAxes 屬性會繫結到 CartesianChart.XAxes 屬性,藉以定義 X 軸,Label 屬性則是定義 X 軸上每個基準點要顯示的字串。