public readonly int SDataCount; // number of data points in series / chart /// <summary> /// ViewModel constructor, requires data source and number of data point in series / chart /// </summary> /// <param name="ohlc">data source</param> /// <param name="nseries">number of data points</param> public ViewModelCandleStickChart(DataTSOHLC ohlc, int nseries) { // init properties DSOHLC = ohlc; SDataCount = nseries; CSOpenCloseDown = new ObservableCollection <DataPoint>(); CSOpenCloseUp = new ObservableCollection <DataPoint>(); CSHighLowDown = new ObservableCollection <DataPoint>(); CSHighLowUp = new ObservableCollection <DataPoint>(); XAxisLabelFormatter = (d0) => ""; // pre-allocate data points for (int i0 = 0; i0 < SDataCount; ++i0) { for (int i1 = 0; i1 < 3; ++i1) { SetCollectionDataPoint(CSOpenCloseDown, -1, i0 + 1, double.NaN); SetCollectionDataPoint(CSOpenCloseUp, -1, i0 + 1, double.NaN); SetCollectionDataPoint(CSHighLowDown, -1, i0 + 1, double.NaN); SetCollectionDataPoint(CSHighLowUp, -1, i0 + 1, double.NaN); } } }
/// <summary> /// Update data source and all data point /// </summary> /// <param name="ohlc">new data source</param> /// <param name="current">current print data array in DataCurrent.Print format</param> public void ChangeDataSource(DataTSOHLC ohlc, double[] currentprint) { DSOHLC = ohlc; // set to new data source NewData(currentprint, true); // update all data points, will cause GUI to redraw }