Will Slim renderers address the GC issues, especially on Android where there is a mismatch between the managed and native control lifecycle? This is especially noticeable in child views in virtualized layouts leading to the dreaded ObjectDisposedException. But with WPF being open source a lot of that can be ported over into MAUI now and I think this is finally the time when that should start happening. Yes a lot more logic would have to be moved into the framework layer, the most challenging being when it comes to items controls ( VirtualizingStackPanel is critical to having a scalable items viewer but has to my knowledge never been effectively ported outside of WPF because it's so complex). The XF rendering platforms have become so bloated because whenever a new type of control is added to the framework it's done with a new renderer rather than building on top of existing primitives within the framework.
When you want to add support for a new property, it only requires mapping the new property. The new extensibility model for this architecture is based on the property mapper.
string or object ? It'd be nice to avoid string comparison in case when we can compare references (in case of BindableProperties) How to use legacy custom renderers How to use third-party controls depending on old renderers How to complement existing renderers TODO: discuss what to use for mapper key. The property mapper plays no role in the feedback loop (button clicked, text entered) The property mapper property of a control is public static and can be extended by user code. A slim renderer itself does not subscribe to the property changes, but some declared actions are executed in response to changes. The property mapper is responsible for triggering actions in response property changes. The rendererRegistrar will exists on the dependency service and be accessed by serviceCollection.Get(), allowing control to which renderer is associated to which control Interfaces on renderers Mapper concept
FromRGB ( 204, 153, 255) Īll the default renderers will be ported to this architecture, for all platforms Registration of renderers Every renderer is consistent you know where the native view is. You don’t need to call any base methods here or worry about order. You know what method to call because you named it! public static void MapBackgroundColor ( IViewRenderer renderer, IView view) You don’t need to register a new renderer.