第一个屏幕关闭后激活第二个屏幕

时间:2014-06-02 01:44:56

标签: caliburn.micro

我正在通过创建这个简单的演示应用程序来学习Caliburn.Micro。我想先显示我的LoginView。然后,在输入凭据并关闭/停用LoginView之后,我想显示我的UserView。我使用LoginViewModel中的TryClose()方法来关闭屏幕。当我运行下面的代码时,e.WasClosed为true,执行ActivateItem(new UserViewModel())行,但重新激活LoginView。

如何让LoginView完全关闭/停用并激活UserView?

以下是代码:

class MainViewModel : Conductor<object>.Collection.OneActive
{
    LoginViewModel lvm = new LoginViewModel();

    public MainViewModel()
    {
        ActivateItem(lvm);

        lvm.Deactivated += new EventHandler<DeactivationEventArgs>(lvm_Deactivated);
    }

    void lvm_Deactivated(object sender, DeactivationEventArgs e)
    {
        if (e.WasClosed)
        {
            ActivateItem(new UserViewModel());
        }
    }
}

1 个答案:

答案 0 :(得分:0)

第一次停用并关闭loginview

this.DeactivateItem(this.lvm, true);

然后激活用户视图

ActivateItem(new UserViewModel());

最终代码

this.DeactivateItem(this.lvm, true);
ActivateItem(new UserViewModel());