1
votes

I've custom renderer in Xamarin and I wonder how to dynamically update its value.

Here is my control in the main class:

public class MainControl : View
{
    public double A
    {
        get;
        set;
    }
}

Here is my custom renderer, defined in Android:

[assembly: Xamarin.Forms.ExportRenderer(typeof(MainApplication.MainControl), typeof(MainApplication.Droid.CustomRenderer))]
namespace MainApplication.Droid
{    
  public class CustomRenderer : ViewRenderer<MainControl, 
  MainApplication.Droid.ControlAndroid>
  {
    private ControlAndroid control;

    public CustomRenderer(Context context) : base(context)
    {

    }

    protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
    {
        base.OnElementPropertyChanged(sender, e);
    }

    protected override void OnElementChanged(ElementChangedEventArgs<MainControl> e)
    {
        base.OnElementChanged(e);

        if (Control == null)
        {
            control = new ControlAndroid(Context);
            SetNativeControl(control);
        }  
    }
}

}

The method OnElementChanged does only update when creating the object. OnElementPropertyChanged are not trigged. I expected that something should be trigged when changing the value of the property A from the main class.

1

1 Answers

0
votes

I found the answer by my own. I figured out that I needed a bindable property (connected to my regular property "A") in order to get a call on OnElementPropertyChanged.