/// <summary>
        /// Adds the Gridlines for the axis.
        /// </summary>
        /// <param name="axis">The Axis</param>
        public void UpdateGridLines(ChartAxis axis)
        {
            if (axis == null)
            {
                return;
            }
            if (axis.GridLinesRecycler == null)
            {
                axis.CreateLineRecycler();
            }
            int axesCount = 1;

            if (axis.RegisteredSeries.Count > 0)
            {
                axesCount = axis.Orientation == Orientation.Horizontal
                    ? Area.RowDefinitions.Count > 1 ? axis.AssociatedAxes.Count : (axis.AssociatedAxes.DistinctBy(Area.GetActualRow)).Count()
                    : Area.ColumnDefinitions.Count > 1 ? axis.AssociatedAxes.Count : (axis.AssociatedAxes.DistinctBy(Area.GetActualColumn)).Count();
            }

            int tickCount = axis.SmallTickPoints.Count * axesCount;

            var categoryAxis = axis as CategoryAxis;

            if (!(categoryAxis != null && categoryAxis.LabelPlacement == LabelPlacement.BetweenTicks))
            {
                tickCount = axis.VisibleLabels.Count * axesCount;
            }

            if (axis.smallTicksRequired)
            {
                ChartCartesianGridLinesPanel.UpdateGridlines(axis, axis.MinorGridLinesRecycler, axis.SmallTickPoints.Count * axesCount, false, false);
            }

            ChartCartesianGridLinesPanel.UpdateGridlines(axis, axis.GridLinesRecycler, tickCount, true, true);
        }