我有两个视图称它们为A和B.当用户对A执行特定操作时,我希望它启动B.两个视图都应该保持打开状态。
A继承了Conductor,我试图调用ActivateItem,但是视图B永远不会打开。
我错过了什么?这是使用Caliburn.micro从另一个视图调用一个视图的正确方法吗?
答案 0 :(得分:3)
好的,如果B视图应该在不同的窗口中,这是最简单的解决方案。我假设AViewModel是'shell'视图模型:
public class AViewModel // : Screen - that's optional right here ;)
{
private readonly BViewModel bViewModel;
private readonly IWindowManager windowManager;
public AViewModel(BViewModel bViewModel, IWindowManager windowManager)
{
this.bViewModel = bViewModel;
this.windowManager = windowManager;
}
public void ShowB()
{
windowManager.ShowWindow(bViewModel); //If you want a modal dialog, then use ShowDialog that returns a bool?
}
}
和最简单的观点(AView):
<Button Name="ShowB" Content="Show another window"/>
当您点击BView
上的按钮时,它会显示AView
的新窗口。
导体用于在一个窗口中具有多个屏幕(或者,换句话说,在一个窗口上具有多个窗格)。有时它是OneActive
(例如在WPF中实施导航时)或AllActive
当有多个屏幕同时可用时。
Here's关于Caliburn.Micro的一些基础知识的精彩教程,该特定部分描述了Window Manager。