Не создавать фактические элементы управления динамически.Поместите все, что вам нужно, в свойствах модели представления и привяжите пользовательский интерфейс к этим свойствам.Конечно, вам также понадобится установить DataContext элемента управления на модель представления.Подробнее см. в этом обзоре .
Чтобы ответить более подробно, привяжите содержимое ContentControl к свойству в ViewModel.Это свойство может быть любого типа!Затем в XAML объявите DataTemplate, который будет использоваться для отображения этого свойства;это будет представлять собой «скин», используемый для одевания этого свойства после его привязки.Установите DataTemplate в качестве ContentTemplate ContentControl (или в качестве значения по умолчанию для этого типа ... и т. Д.).DataTemplate может содержать другие элементы управления, другие привязки, что угодно.Это как минимум один способ сделать это, их много.Вам нужно будет задать что-то более конкретное или начать читать по основам.