我有两个视图,分别称为 A 和 B。当用户对 A 执行特定操作时,我希望它启动 B。两个视图都应保持打开状态。
A 继承了 Conductor,我尝试调用 ActivateItem 但视图 B 永远不会打开。
我错过了什么?这是使用 Caliburn.micro 从另一个视图调用一个视图的正确方法吗?
我有两个视图,分别称为 A 和 B。当用户对 A 执行特定操作时,我希望它启动 B。两个视图都应保持打开状态。
A 继承了 Conductor,我尝试调用 ActivateItem 但视图 B 永远不会打开。
我错过了什么?这是使用 Caliburn.micro 从另一个视图调用一个视图的正确方法吗?
好的,如果 B 视图应该在不同的窗口中,这是最简单的解决方案。我假设 AViewModel 是“外壳”视图模型:
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
同时有多个屏幕可用时。
这是一个关于 Caliburn.Micro 基础知识的很好的教程,该特定部分描述了窗口管理器。