Xamarin.forms Xamarin形成本机自定义渲染器

Xamarin.forms Xamarin形成本机自定义渲染器,xamarin.forms,custom-renderer,Xamarin.forms,Custom Renderer,在我的Xamarin Forms共享项目中,我遵循了James Montemagno关于如何为圆形图像制作自定义渲染器的指南 作为指南的真实副本,将代码本身添加到我的项目中感觉是多余的,但如果不是这样,请发表评论 它的工作是完美的,但是,我需要改变的颜色的圆圈边框动态按下一个按钮时,应用程序正在运行 但由于圆圈的颜色是在每个渲染器中本机设置的,我不确定如何从共享代码中更改它。也许这段代码可以帮助: public class CircleImage : Image { public st

在我的Xamarin Forms共享项目中,我遵循了James Montemagno关于如何为圆形图像制作自定义渲染器的指南

作为指南的真实副本,将代码本身添加到我的项目中感觉是多余的,但如果不是这样,请发表评论

它的工作是完美的,但是,我需要改变的颜色的圆圈边框动态按下一个按钮时,应用程序正在运行


但由于圆圈的颜色是在每个渲染器中本机设置的,我不确定如何从共享代码中更改它。

也许这段代码可以帮助:

public class CircleImage : Image
{

    public static readonly BindableProperty CurvedBackgroundColorProperty =
        BindableProperty.Create(
            nameof(CurvedBackgroundColor),
            typeof(Color),
            typeof(CurvedCornersLabel),
            Color.Default);

    public Color CurvedBackgroundColor
    {
        get { return (Color)GetValue(CurvedBackgroundColorProperty); }
        set { SetValue(CurvedBackgroundColorProperty, value); }
    }

}

//Android/iOS

[assembly: ExportRenderer(typeof(CircleImage), typeof(CircleImageRenderer))]
namespace SchedulingTool.iOS.Renderers
{
    public class CircleImageRenderer : ImageRenderer
    {
        protected override void OnElementChanged(ElementChangedEventArgs<Image> e)
        {
            base.OnElementChanged(e);

            if (e.NewElement != null)
            {
                var xfViewReference = (CircleImage)Element;
                //Here you can reference xfViewReference.CurvedBackgroundColor to assign what ever is binded.
            }
        }
    }
}
我希望您了解主要思想,您可以创建自己的可绑定属性并在本机渲染器上访问它们

如果一切都没有按预期进行,您可以随时下载NuGet,它拥有您所需的一切:


为什么不公开一个属性来设置颜色呢?非常好的建议,绝对理想。我自己这样做的尝试是徒劳的,因此问题就来了。已具有可在共享代码中更新的边框颜色。渲染器将检测到更改并相应更新-