For this you do not need to change the hierarchy of presenters. I suggest that you consider using the MultiPresenter.Presenters property to collect child ViewModels and the MultiPresenter.Open and MultiPresenter.Shutdown methods if you need to ensure the life cycle of the ViewModels children.
For a binding problem, you must define a template for ListBox items:
<ListBox ItemsSource="{Binding Parts}"> <ListBox.ItemTemplate> <DataTemplate> <ContentControl cal:View.Model="{Binding}" /> </DataTemplate> </ListBox.ItemTemplate> </ListBox>
Using the attached cal:View.Model , the structure takes care of creating the corresponding View for each ViewModel, binding it to the ViewModel and inserting it into the ContentControl.
You must also ensure that your namespace and classspace for the Views and ViewModels names follows the Caliburn default convention , if you want your views to be correctly derived from the base. Otherwise, you need to write a custom IViewStrategy (it's not difficult, though).
Edit: fixed binding expression in cal: View.Model property
source share