Ooui-tws-port/Ooui.Forms/Renderers/FrameRenderer.cs

65 lines
2.1 KiB
C#

using System;
using System.ComponentModel;
using Xamarin.Forms;
using Ooui.Forms.Extensions;
namespace Ooui.Forms.Renderers
{
public class FrameRenderer : VisualElementRenderer<Frame>
{
protected override void OnElementChanged (ElementChangedEventArgs<Frame> 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";
}
}
}
}