You shouldn't create User controls manually in code. You should use LoadControl method from Page object. Then it will initialize it correctly. Like this
protected void button1_Click(object sender, EventArgs e)
{
WebControlDemo wcd = this.LoadControl("~/SomePath/WebControlDemo.ascx") as WebControlDemo;
this.placeHolder1.Controls.Add(wcd);
}