At the moment I would like to put a combo-box on a shape. I already tried with letting the combo-box render in the diagram bitmap when it is redrawn, but this doesn't run very smoothly. Besides that there is quite some code needed to handle mouse-events etc properly. If it was something simple like a toggle-button it would be fairly easy to just implement the drawing and mouse-events myself, but I would like potential access to all controls.
I now found that if you add the control to the controlcollection of the diagram it does get rendered properly and will receive events like it should, so now I'm writing a wrapper class around ComplexShape to allow for adding controls. The only downside I see of this method is that you need to know in which Diagram the shape will end up before you create it. You can also not put controls in StencilItems because you can't get a vector path for it.
The program I am creating has a potential of about 100 shapes, so I don't think that will be a problem.