Conductor.Collection.AllActive
использует Items
свойство. Если вы хотите отобразить несколько экранов одновременно, вы должны добавить их в свойство Items
.
Тогда, поскольку ваши представления хранятся в свойстве Items
, вы хотите связать свое представление с Items
. Это пример:
Проводник:
public class ShellViewModel : Conductor<IScreen>.Collection.AllActive
{
public ShellViewModel()
{
Items.Add(new ChildViewModel());
Items.Add(new ChildViewModel());
Items.Add(new ChildViewModel());
}
}
Вид проводника (обратите внимание, потому что мы показываем коллекцию элементов, которые мы хотим использовать ItemsSource
, а не ContentControl
):
<Grid>
<StackPanel>
<ItemsControl x:Name="Items"></ItemsControl>
</StackPanel>
</Grid>
Детский экран:
public class ChildViewModel : Screen
{
}
Детский вид:
<Grid>
<Border Width="50" Height="50" BorderBrush="Red" BorderThickness="5"></Border>
</Grid>
РЕДАКТИРОВАТЬ: Что касается обсуждения в комментариях, вот как вы можете использовать IWindowManager
, чтобы показать несколько окон:
public class ShellViewModel : Screen
{
public ShellViewModel(IWindowManager windowManager)
{
var window1 = new ChildViewModel();
var window2 = new ChildViewModel();
windowManager.ShowWindow(window1);
windowManager.ShowWindow(window2);
window1.TryClose();
}
}