Since UserControls in WPF have to have parameterless constructors, what is the correct way for supplying them with fairly complex data that is needed "near" the time of construction. I have tried using dependency properties for this, but am running into issues with the Visual Studio designer balking at attempts to pass stuff like a `Dictionary<string,MyObject>` into an `IDictionary<string,MyObject>` typed dependency property. At some point it must want an exact compile time type match, or the XAML doesn't come up in the designer, although the application executes just fine.

Basically, I want a good way to pass in stuff that I would normally pass into a constructor into a User Control. What's the best way?

Update: 
The user control in question will always be created from XAML, so having a non-parameterless construction in addition to the parameterless one is not an option. 

Update 2:
An interesting idea would be to have something accessible from the parameterless constructor that I can get my initialization data from. Something like perhaps asking the question: Which of my already initialized ancestors implements an IMyDataProvider interface? This could be similar to how the *relative source to ancestor type* bindings work, except done programatically from the user control constructor.