You could use a public property to allow you to specify a property to set an xml file path or a List<> object for a datasource.
Add something like this into your code behind
public string XmlDataPath { get; set; } and then you could set it as an attribute in the markup like
<cc1:YourControl runat="server" ID="YourControl1" XmlDataPath="~/Example/Path.xml" />
or edit in via code like
YourControl1.XmlDataPath = "~/Example/Path.xml";
The next level up from a UserControl is a Server Control such as this tutorial:
The downside is that you dont get the canvas and you have to take responsibility for registering each control used within the control via code. The upside is you get full control over everything, including being able to create a great design time experience.