Добрый день.
Вот
старенькая статья с тремя разными вариантами реализации показа дочерних окон. Сейчас правда уже другой подход использую. Когда все дочерние View создаются как контролы. Дочернее окно одно и содержит ContentPresenter. При вызове метода показа дочернего окна в его DataContext помещается ViewModel. А как сопоставить View и ViewModel храниться в ресурсах:
<DataTemplate DataType="{x:Type viewmodel:ResponsePart8ViewModel}">
<view:ResponsePart8View HorizontalAlignment="Stretch" />
</DataTemplate>
При показе окна ContentPresenter сам, по типу объекта лежащего в DataContext создает View. Если не очень понятно, то могу скинуть развернутый пример.