private double GetLabelOffset(PieChart pieChart)
        {
            double labelOffset = 0;
            object rawLabelOffset = ReadLocalValue(LabelOffsetProperty);
            if (rawLabelOffset == DependencyProperty.UnsetValue)
                labelOffset = pieChart.LabelOffset;
            else
                labelOffset = (double)rawLabelOffset;

            return labelOffset;
        }
        internal void Update(double offset, double percentage, PieChart pieChart)
        {
            double thickness = Thickness;
            if (thickness == 0)
                thickness = pieChart.Thickness;

            double minHalfSize = Math.Min(ActualWidth, ActualHeight) / 2;
            thickness = Math.Min(minHalfSize, thickness);

            double radius = minHalfSize - thickness / 2;
            if (radius > 0)
            {
                if (offset < 0)
                    offset = 0;
                else if (offset >= 100)
                    offset = 99.9999d;

                if (percentage < 0)
                    percentage = 0;
                if (percentage >= 100)
                    percentage = 99.9999d;

                double angleOffset = (offset * 360) / 100;
                double angle = (percentage * 360) / 100;

                RenderArc(radius, thickness, angleOffset, angle);

                double labelOffset = GetLabelOffset(pieChart);
                RenderLabel(radius, labelOffset, thickness, angleOffset, angle);
            }
        }