C# Caliburn Micro Conductor.Collection.AllActive不工作
我已尝试使用Caliburn Micro with Conductor.Collection.AllActive激活应用程序中的多个窗口 以下步骤: 从Conductor.Collection.AllActive导入的MainHomeViewModel 1) 创造财产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=
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 ForConductor.Collection.AllActive
,ActivateItem()
在内部执行与项目相同的操作。Add
。你可以使用任何你想要的。现在ChildViewModel的视图是用户控件,但我的要求是添加窗口而不是用户控件。那么我们可以使用ContentControl而不是ItemsControl来保存多个窗口,或者我们如何实现它?@VyasDev所以你不想使用它。您想使用IWindowManager
并使用ShowWindow()
方法。@VyasDev更新了我的答案。谢谢,让我试试这种方法。在将viewmodel添加到我们不需要调用ActivateItem方法的项目中之后,还有一个疑问?@VyasDev ForConductor.Collection.AllActive
,ActivateItem()
在内部执行与项目相同的操作。Add
。你可以使用任何你想要的。现在ChildViewModel的视图是用户控件,但我的要求是添加窗口而不是用户控件。那么我们可以使用ContentControl而不是ItemsControl来保存多个窗口,或者我们如何实现它?@VyasDev所以你不想使用它。您想使用IWindowManager
并使用ShowWindow()
方法。@VyasDev更新了我的答案。