/// <summary>
        /// Removes an axis from the Chart area.
        /// </summary>
        /// <param name="axis">The axis to remove from the ISeriesHost area.</param>
        private void RemoveAxisFromChartArea(Axis axis)
        {
            IAxisGridLinesElementProvider axisGridLinesElementProvider = axis as IAxisGridLinesElementProvider;

            if (axisGridLinesElementProvider != null)
            {
                axisGridLinesElementProvider.GridLinesElementChanged -= AxisGridLinesElementChanged;
                if (axisGridLinesElementProvider.GridLinesElement != null)
                {
                    _gridLinesContainerChildren.Remove(axisGridLinesElementProvider.GridLinesElement);
                }
            }
            axis.LocationChanged    -= AxisLocationChanged;
            axis.OrientationChanged -= AxisOrientationChanged;

            RebuildChartArea();
        }
        /// <summary>
        /// Adds an axis to the ISeriesHost area.
        /// </summary>
        /// <param name="axis">The axis to add to the ISeriesHost area.</param>
        private void AddAxisToChartArea(Axis axis)
        {
            IAxisGridLinesElementProvider axisGridLinesElementProvider = axis as IAxisGridLinesElementProvider;

            if (axisGridLinesElementProvider != null)
            {
                axisGridLinesElementProvider.GridLinesElementChanged += AxisGridLinesElementChanged;
                if (axisGridLinesElementProvider.GridLinesElement != null)
                {
                    _gridLinesContainerChildren.Add(axisGridLinesElementProvider.GridLinesElement);
                }
            }
            axis.LocationChanged    += AxisLocationChanged;
            axis.OrientationChanged += AxisOrientationChanged;

            if (ChartArea != null)
            {
                ChartArea.Children.Add(axis);
                RebuildChartArea();
            }
        }