@braca I've not had chance to look into this properly, but does it work if you return a Binding rather than a BindingExtension from ProvideValue?
My guess is that Portable.Xaml supported markup extensions returning markup extensions recursively, whereas our XAML compiler doesnt. In fact I'm not even sure that recursive binding extensions should work, it might have just been a "hidden" feature of Portable.Xaml.
@grokys I think this is not a bug after all, my bad. In WPF the behaviour is the same, I thought it wasn't but my WPF code had a small difference, and that makes all the difference.
In WPF I'm using TargetNullValue alongside with FallbackValue.
Removing the TargetNullValue, WPF behaves the same way Avalonia 0.9.
Our translator returns null when there is no translation available for the key. null is a valid 'value' for string, so the correct behaviour seems to be, to use null, instead of the fallbackvalue.
So, I believe that the bug was on 0.8.x where it was behaving differently from WPF :)