protected override void OnElementChanged(VisualElementChangedEventArgs e)
        {
            base.OnElementChanged(e);

            if (e.OldElement == null)
            {
                if (View.Layer.Sublayers != null)
                {
                    if (View.Layer.Sublayers.Length > 1)
                    {
                        View.Layer.Sublayers[0].RemoveFromSuperLayer();
                    }
                }

                MyContentPageRenderer page = (MyContentPageRenderer)Element;

                if (page.IsGradient)
                {
                    var gradientLayer = new CAGradientLayer();
                    gradientLayer.Frame  = View.Bounds;
                    gradientLayer.Colors = new CGColor[] { page.StartColor.ToCGColor(), page.EndColor.ToCGColor() };
                    View.Layer.InsertSublayer(gradientLayer, 0);
                }
            }
        }
        private void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
        {
            if (e.PropertyName == MyContentPageRenderer.OrientationProperty.PropertyName)
            {
                if (View.Layer.Sublayers.Length > 1)
                {
                    View.Layer.Sublayers[0].RemoveFromSuperLayer();
                }

                MyContentPageRenderer page = (MyContentPageRenderer)Element;

                if (page.IsGradient)
                {
                    var gradientLayer = new CAGradientLayer();
                    gradientLayer.Frame  = View.Bounds;
                    gradientLayer.Colors = new CGColor[] { page.StartColor.ToCGColor(), page.EndColor.ToCGColor() };
                    View.Layer.InsertSublayer(gradientLayer, 0);
                }
            }
        }
        protected override void DispatchDraw(Canvas canvas)
        {
            MyContentPageRenderer myContentPageRenderer = (MyContentPageRenderer)Element;

            if (myContentPageRenderer.IsGradient)
            {
                var gradient = new LinearGradient(0, 0, 0, Height,
                                                  myContentPageRenderer.StartColor.ToAndroid(),
                                                  myContentPageRenderer.EndColor.ToAndroid(),
                                                  Shader.TileMode.Mirror);
                var paint = new Paint
                {
                    Dither = true,
                };
                paint.SetShader(gradient);
                canvas.DrawPaint(paint);
            }

            base.DispatchDraw(canvas);
        }