/// <summar /// Ensures that ISeriesHost is in a consistent state when axes collection is /// changed. /// </summary> /// <param name="sender">Event source.</param> /// <param name="e">Event arguments.</param> private void OnAxesCollectionChanged(object sender, NotifyCollectionChangedEventArgs e) { if (e.NewItems != null) { foreach (IAxis axis in e.NewItems) { if (!InternalActualAxes.Contains(axis)) { InternalActualAxes.Add(axis); } } } if (e.OldItems != null) { foreach (IAxis axis in e.OldItems) { if (!axis.IsUsed) { InternalActualAxes.Remove(axis); } else { throw new InvalidOperationException(Properties.Resources.Chart_OnAxesCollectionChanged_AnAxisCannotBeRemovedFromTheChartWhenItIsInUseByAnObject); } } } NotifyCollectionChangedEventHandler handler = AxesChanged; if (handler != null) { handler(sender, e); } }
/// <summary> /// Signals to the ISeriesHost that a series would like to use an axis. /// </summary> /// <param name="series">The series that would like to use the axis. /// </param> /// <param name="axis">The axis the series would like to use.</param> void ISeriesHost.RegisterWithAxis(Series series, IAxis axis) { if (series == null) { throw new ArgumentNullException("series"); } if (axis == null) { throw new ArgumentNullException("axis"); } axis.Register(series); if (!InternalActualAxes.Contains(axis)) { InternalActualAxes.Add(axis); } }