/// <summary> /// Called when DataSource property changed /// </summary> /// <param name="oldValue"></param> /// <param name="newValue"></param> protected override void OnDataSourceChanged(System.Collections.IEnumerable oldValue, System.Collections.IEnumerable newValue) { Segment = null; base.OnDataSourceChanged(oldValue, newValue); }
/// <summary> /// Creates the segments of StackingAreaSeries /// </summary> public override void CreateSegments() { ClearUnUsedAdornments(this.DataCount); List <double> xValues = new List <double>(); List <double> drawingListXValues = new List <double>(); List <double> drawingListYValues = new List <double>(); double Origin = ActualXAxis != null ? ActualXAxis.Origin : 0d; if (ActualXAxis != null && ActualXAxis.Origin == 0 && ActualYAxis is LogarithmicAxis && (ActualYAxis as LogarithmicAxis).Minimum != null) { Origin = (double)(ActualYAxis as LogarithmicAxis).Minimum; } if (ActualXAxis is CategoryAxis && !(ActualXAxis as CategoryAxis).IsIndexed) { Adornments.Clear(); xValues = GroupedXValuesIndexes; } else { xValues = GetXValues(); } var stackingValues = GetCumulativeStackValues(this); if (stackingValues != null) { YRangeStartValues = stackingValues.StartValues; YRangeEndValues = stackingValues.EndValues; if (YRangeStartValues != null) { drawingListXValues.AddRange(xValues); drawingListYValues.AddRange(YRangeStartValues); } else { drawingListXValues.AddRange(xValues); drawingListYValues = (from val in xValues select Origin).ToList(); } drawingListXValues.AddRange((from val in xValues select val).Reverse().ToList()); drawingListYValues.AddRange((from val in YRangeEndValues select val).Reverse().ToList()); if (Segment == null || Segments.Count == 0) { Segment = new StackingAreaSegment(drawingListXValues, drawingListYValues, this) { Series = this, Item = ActualData }; Segment.SetData(drawingListXValues, drawingListYValues); Segments.Add(Segment); } else { Segment.Item = ActualData; Segment.SetData(drawingListXValues, drawingListYValues); } if (ShowEmptyPoints) { UpdateEmptyPointSegments(drawingListXValues, false); } if (AdornmentsInfo != null) { AddStackingAreaAdornments(YRangeEndValues); } } }