Wow I've never thought about it this way. But plain and simple, whenever you want a control template to be assigned dynamically, you need DataTemplates along with a DataTemplateSelector.
For example, my grid control uses a datatemplate selector that looks at the type of cell (Text, Image, DropDown, CheckBox) and assigns the appropriate DataTemplate.
In cases where the control will never change, just use a controltemplate and be done with it 
What's in your toolbelt? http://www.codeplex.com/Wiki/View.aspx?ProjectName=wpftoolbelt |