/// <summary> /// Update the axes when the specified data point's ActualDependentValue property changes. /// </summary> /// <param name="dataPoint">The data point.</param> /// <param name="oldValue">The old value.</param> /// <param name="newValue">The new value.</param> protected override void OnDataPointActualDependentValueChanged(DataPoint dataPoint, IComparable oldValue, IComparable newValue) { if (oldValue != null) { bool removed = DataPointsByActualDependentValue.Remove(oldValue, dataPoint); if (removed) { DataPointsByActualDependentValue.Add(newValue, dataPoint); } } UpdateActualDependentAxis(); UpdateDataPoint(dataPoint); base.OnDataPointActualDependentValueChanged(dataPoint, oldValue, newValue); }
/// <summary> /// Called after data points have been loaded from the items source. /// </summary> /// <param name="newDataPoints">New active data points.</param> /// <param name="oldDataPoints">Old inactive data points.</param> protected override void OnDataPointsChanged(IList <DataPoint> newDataPoints, IList <DataPoint> oldDataPoints) { foreach (DataPoint dataPoint in newDataPoints) { DataPointsByActualDependentValue.Add(dataPoint.ActualDependentValue, dataPoint); } foreach (DataPoint dataPoint in oldDataPoints) { DataPointsByActualDependentValue.Remove(dataPoint.ActualDependentValue, dataPoint); } GetAxes(); if (InternalActualDependentAxis != null && InternalActualIndependentAxis != null) { Action action = () => { AxesInvalidated = false; UpdatingAllAxes = true; try { UpdateActualIndependentAxis(); UpdateActualDependentAxis(); } finally { UpdatingAllAxes = false; } if (AxesInvalidated) { UpdateDataPoints(ActiveDataPoints); } else { UpdateDataPoints(newDataPoints); } AxesInvalidated = false; }; InvokeOnLayoutUpdated(action); } base.OnDataPointsChanged(newDataPoints, oldDataPoints); }