¿Cómo enlazo un TabControl a una colección de ViewModels?

ásicamente tengo en mi MainViewModel.cs:

ObservableCollection<TabItem> MyTabs { get; private set; }

in embargo, necesito de alguna manera poder crear no solo las pestañas, sino que el contenido de las pestañas se cargue y se vincule a sus modelos de vista apropiados mientras mantengo MVV

Básicamente, ¿cómo puedo hacer que se cargue un control de usuario como contenido de un elemento de tabla Y que ese control de usuario se conecte a un modelo de vista apropiado. La parte que dificulta esto es que no se supone que ViewModel construya los elementos de vista reales, ¿verdad? ¿O puede?

Básicamente, ¿sería apropiado MVVM:

UserControl address = new AddressControl();
NotificationObject vm = new AddressViewModel();
address.DataContext = vm;
MyTabs[0] = new TabItem()
{
    Content = address;
}

Solo pregunto porque bueno, estoy construyendo una vista (AddressControl) desde un ViewModel, que para mí suena como un MVVM no-no.

Respuestas a la pregunta(3)

Su respuesta a la pregunta