<cc:WinFormsHost ShowCaption="False"> <wf:Form/> </cc:WinFormsHost>
Your XAML embeds a System.Windows.Forms.Form object inside WinFormsHost. This is what you have, just an empty form with no child controls built into it. It looks like you tried to create your own in the WinFormsHost constructor by setting the Child property, but your XAML overrides it and you are left with an empty form again.
I put the ChildForm class inside the same namespace:
using System.Windows.Forms; using System.Drawing; ... public class ChildForm : System.Windows.Forms.Form { public ChildForm() { this.BackColor = Color.FromKnownColor(KnownColor.Window); var lbl = new Label { Text = "Hello world" }; this.Controls.Add(lbl); } }
And updated XAML to:
<cc:WinFormsHost ShowCaption="False"> <cc:ChildForm/> </cc:WinFormsHost>
To obtain:

Set FormBorderStyle to None to get rid of the border. Etcetera.
Setting the form The TopLevel property to false and Visible to true is a much simpler way to turn the form into a child btw control. I left it that way, as you hinted that you might want to give the Delphi window the same treatment. In this case, you can return to your original approach again by creating a child in the constructor of the form class and simply missing the purpose of the content in XAML.
Hans passant
source share