Xamarin Forms 原生 customrenderer
Xamarin Forms native customrenderer
我遵循了 James Montemagno 的指南,了解如何在我的 Xamarin Forms 共享项目中为圆形图像制作自定义渲染器。
https://blog.xamarin.com/elegant-circle-images-in-xamarin-forms/
(作为指南的真实副本,将代码本身实际添加到我的项目中感觉多余,但如果不是这种情况请发表评论)
它运行完美,但是,我需要在应用 运行.
时通过按下按钮来动态更改圆形边框的颜色
但是由于圆圈的颜色是在每个渲染器中本地设置的,所以我不确定如何从我的共享代码中更改它。
也许这段代码可以提供帮助:
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(它拥有您需要的一切):
我遵循了 James Montemagno 的指南,了解如何在我的 Xamarin Forms 共享项目中为圆形图像制作自定义渲染器。
https://blog.xamarin.com/elegant-circle-images-in-xamarin-forms/
(作为指南的真实副本,将代码本身实际添加到我的项目中感觉多余,但如果不是这种情况请发表评论)
它运行完美,但是,我需要在应用 运行.
时通过按下按钮来动态更改圆形边框的颜色但是由于圆圈的颜色是在每个渲染器中本地设置的,所以我不确定如何从我的共享代码中更改它。
也许这段代码可以提供帮助:
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(它拥有您需要的一切):