1

我有两个视图,分别称为 A 和 B。当用户对 A 执行特定操作时,我希望它启动 B。两个视图都应保持打开状态。

A 继承了 Conductor,我尝试调用 ActivateItem 但视图 B 永远不会打开。

我错过了什么?这是使用 Caliburn.micro 从另一个视图调用一个视图的正确方法吗?

4

1 回答 1

3

好的,如果 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 基础知识的很好的教程,该特定部分描述了窗口管理器。

于 2013-05-03T20:13:51.257 回答