Why does setting BindableProperty.DefaultValue not call OnPropertyChanged?

Viewed 166

I'm using a bindable property like this in a class the inherits from Xamarin.Forms.ContentView:

public static readonly BindableProperty OverlayColorProperty = BindableProperty.Create(nameof(OverlayColor), typeof(Color), typeof(MyControl), Color.FromHex("#55000000"));

public Color OverlayColor
{
    get => (Color)GetValue(OverlayColorProperty);
    set => SetValue(OverlayColorProperty, value);
}

Furthermore I'm listening for changes to update an inner elements background color:

protected override void OnPropertyChanged(string propertyName)
{
    base.OnPropertyChanged(propertyName);

    switch (propertyName)
    {
        case nameof(OverlayColor):
            GridBackground.BackgroundColor = OverlayColor;
            break;
    }
}

I just noticed that OnPropertyChanged does not get called with the default value. Just when I update it from another place, XAML or through code.

Is this exspected behavior? If yes, why? What should I do instead? Define it also in XAML code?

0 Answers
Related