C# Caliburn Micro Conductor.Collection.AllActive不工作

C# Caliburn Micro Conductor.Collection.AllActive不工作,c#,wpf,xaml,uwp,caliburn.micro,C#,Wpf,Xaml,Uwp,Caliburn.micro,我已尝试使用Caliburn Micro with Conductor.Collection.AllActive激活应用程序中的多个窗口 以下步骤: 从Conductor.Collection.AllActive导入的MainHomeViewModel 1) 创造财产 public ExploreViewModel Explorer { get; private set; } 2) 已创建名为属性名的ContentControl <ContentControl x:Name=

我已尝试使用Caliburn Micro with Conductor.Collection.AllActive激活应用程序中的多个窗口

以下步骤:

从Conductor.Collection.AllActive导入的MainHomeViewModel

1) 创造财产

public ExploreViewModel Explorer {
   get; private set;  
 }
2) 已创建名为属性名的ContentControl

<ContentControl x:Name="Explorer" />
执行上述代码后,它将实例化ExplorerViewModel,但不会转到视图的构造函数或显示视图

以上实现有任何问题,或者我需要做更多的事情来激活该项

请帮忙

谢谢

编辑

    public class MainHomeWindowViewModel : Conductor<IScreen>.Collection.AllActive
    {
      protected override void OnInitialize()
      {
       base.OnInitialize();
       ShowExplorer();
       }
        public void ShowExplorer()
        {

            Explorer = new ExplorerViewModel();
            ActivateItem(Explorer );

        }
}
公共类MainHomeWindowViewModel:Conductor.Collection.AllActive
{
受保护的重写void OnInitialize()
{
base.OnInitialize();
ShowExplorer();
}
公共资源管理器()
{
Explorer=newexplorerviewmodel();
ActivateItem(浏览器);
}
}

Conductor.Collection.AllActive使用
属性。如果要一次显示多个屏幕,则必须将它们添加到
项目
属性中

然后,由于视图存储在
项目
属性中,因此需要将视图绑定到
项目
。这是一个例子:

售票员:

public class ShellViewModel : Conductor<IScreen>.Collection.AllActive
{
    public ShellViewModel()
    {
        Items.Add(new ChildViewModel());
        Items.Add(new ChildViewModel());
        Items.Add(new ChildViewModel());
    }
}
子屏幕:

public class ChildViewModel : Screen
{
}
子视图:

<Grid>
    <Border Width="50" Height="50" BorderBrush="Red" BorderThickness="5"></Border>
</Grid>

Conductor.Collection.AllActive
使用
属性。如果要一次显示多个屏幕,则必须将它们添加到
项目
属性中

然后,由于视图存储在
项目
属性中,因此需要将视图绑定到
项目
。这是一个例子:

售票员:

public class ShellViewModel : Conductor<IScreen>.Collection.AllActive
{
    public ShellViewModel()
    {
        Items.Add(new ChildViewModel());
        Items.Add(new ChildViewModel());
        Items.Add(new ChildViewModel());
    }
}
子屏幕:

public class ChildViewModel : Screen
{
}
子视图:

<Grid>
    <Border Width="50" Height="50" BorderBrush="Red" BorderThickness="5"></Border>
</Grid>

你能带全班同学去吗?您在哪里调用ActivateItem(Explorer)?@fc在已编辑的问题中,请检查。它调用ExplorerServiceModel,但不显示view。您能显示整个类吗?您在哪里调用
ActivateItem(Explorer)
?@fc在已编辑的问题中,请检查。它调用的是ExplorerServiceWModel,但没有显示视图。谢谢,让我这样试试。在将viewmodel添加到我们不需要调用ActivateItem方法的项目中之后,还有一个疑问?@VyasDev For
Conductor.Collection.AllActive
ActivateItem()
在内部执行与
项目相同的操作。Add
。你可以使用任何你想要的。现在ChildViewModel的视图是用户控件,但我的要求是添加窗口而不是用户控件。那么我们可以使用ContentControl而不是ItemsControl来保存多个窗口,或者我们如何实现它?@VyasDev所以你不想使用它。您想使用
IWindowManager
并使用
ShowWindow()
方法。@VyasDev更新了我的答案。谢谢,让我试试这种方法。在将viewmodel添加到我们不需要调用ActivateItem方法的项目中之后,还有一个疑问?@VyasDev For
Conductor.Collection.AllActive
ActivateItem()
在内部执行与
项目相同的操作。Add
。你可以使用任何你想要的。现在ChildViewModel的视图是用户控件,但我的要求是添加窗口而不是用户控件。那么我们可以使用ContentControl而不是ItemsControl来保存多个窗口,或者我们如何实现它?@VyasDev所以你不想使用它。您想使用
IWindowManager
并使用
ShowWindow()
方法。@VyasDev更新了我的答案。