The skinning I’m currently working on turned out to work really great.
Skins are separate C# classes allowing creation of component parts separately from the main component logic.
Developer should create a default skin as C# class and attach it to a component. The user of the component will have the option of writing a custom skin as C# class, or building it using the designer.
Skinning contracts allows changing the component skin with a single line of code:
In the previous example, I attached a different (non-default) skin to the second panel.
This resulted in changing of the skin parts placement (control bar on moved to the top, header to the bottom):
Additionally, the layout of the main (content) group has been changed by configuring the component itself (changes are being propagated to skin).
Note that the size of the right panel changed because of the horizontal row of buttons demanding more space.
Overall: a great concept, definitely working with Unity and eDriven.