Для этого вам не нужно менять иерархию презентаторов. Я предлагаю вам рассмотреть возможность использования свойства MultiPresenter.Presenters
для сбора дочерних ViewModels и методов MultiPresenter.Open
и MultiPresenter.Shutdown
, если вам нужно применить жизненный цикл дочерних ViewModels.
Для проблемы привязки вы должны определить шаблон для элементов ListBox:
<ListBox ItemsSource="{Binding Parts}">
<ListBox.ItemTemplate>
<DataTemplate>
<ContentControl cal:View.Model="{Binding}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Используя cal:View.Model
присоединенное свойство, каркас заботится о создании соответствующего View для каждой ViewModel, привязке его к ViewModel и вставке его в ContentControl.
Вы также должны убедиться, что ваше пространство имен и имена классов для Views и ViewModels соответствуют стандарту Caliburn по умолчанию, если вы хотите, чтобы ваши представления были правильно выведены из инфраструктуры. В противном случае вам нужно написать собственную IViewStrategy (хотя это не сложно).
Редактировать: исправлено выражение привязки в свойстве cal: View.Model