using System; using System.ComponentModel; using Xamarin.Forms; using Ooui.Forms.Extensions; namespace Ooui.Forms.Renderers { public class FrameRenderer : VisualElementRenderer { protected override void OnElementChanged (ElementChangedEventArgs e) { base.OnElementChanged (e); if (e.NewElement != null) SetupLayer (); } protected override void OnElementPropertyChanged (object sender, PropertyChangedEventArgs e) { base.OnElementPropertyChanged (sender, e); if (e.PropertyName == VisualElement.BackgroundColorProperty.PropertyName || e.PropertyName == Xamarin.Forms.Frame.BorderColorProperty.PropertyName || e.PropertyName == Xamarin.Forms.Frame.HasShadowProperty.PropertyName || e.PropertyName == Xamarin.Forms.Frame.CornerRadiusProperty.PropertyName) SetupLayer (); } void SetupLayer () { float cornerRadius = Element.CornerRadius; if (cornerRadius == -1f) cornerRadius = 5f; // default corner radius var Layer = this.Style; Layer.BorderRadius = cornerRadius; Layer.BackgroundColor = Element.BackgroundColor.ToOouiColor (OouiTheme.BackgroundColor); if (Element.HasShadow) { //Layer.ShadowRadius = 5; //Layer.ShadowColor = "black"; //Layer.ShadowOpacity = 0.8f; //Layer.ShadowOffset = new SizeF (); } else { //Layer.ShadowOpacity = 0; } if (Element.BorderColor == Xamarin.Forms.Color.Default) { Layer.BorderColor = Colors.Clear; Layer.BorderWidth = 1; Layer.BorderStyle = "none"; } else { Layer.BorderColor = Element.BorderColor.ToOouiColor (Colors.Clear); Layer.BorderWidth = 1; Layer.BorderStyle = "solid"; } } } }