Я бы посчитал шаблон MVVM свободным руководством.
В идеале вы ищете тестируемое приложение. Любой код в пользовательском интерфейсе сложнее протестировать.
Если это работает в ваших обстоятельствах, тогда сделайте это, но помните о проверяемости.
В приложении, над которым я сейчас работаю, у меня есть ItemsControl с 6 экземплярами того же UserControl и ViewModel.
Edit:
public class InsuranceViewModel
{
public ObservableCollection<UnderwritingViewModel> Underwriting { get; set; }
}
По моему мнению:
<ItemsControl ItemsSource="{Binding Path=Underwriting}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<!-- this could be another UserControl -->
<views:UWView DataContext="{Binding}" />
<!-- or a full data template defined in this view -->
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
Или вы можете поместить это в свои ресурсы:
Таким образом, по сути, все, что вам нужно сделать, это создать новые экземпляры ViewModel в вашем DataContext, и шаблон позаботится о создании представления.