What about more complex structures like BoxBackend, CanvasBackend or simply the TextEntryBackend, where not only the signatures differ but have completely different implementations?

To keep the explanation simple: TextEntry has a PlaceholderText property, that has completely different implementations (gtk3 has a native implementation, while for gtk2 this needs to be done by the backend itself).

1. The simplest solution to eliminate the XWT_GTK3 symbol would be using a partial class part. New TextEntryBackendGtk.cs and TextEntryBackendGtk3.cs could contain the toolkit specific implementations of the property. It wouldn't be so elegant, but quite simple. 
2. An OOP solution would be much more "complex" in this case. It would require an abstract base class declaring at least the Widget and/or TextEntry property, so its toolkit derivates have direct access to the Gtk.Entry widget. And this gets even more complex in BoxBackend or CanvasBackend for the sizing implementations.

I think the first solution is better here. It is easy to read and to reproduce. And Xwt has some partial classes already. What do you think?