如何在Caliburn.Micro中从一个视图导航到另一个视图?

时间:2011-03-01 09:43:15

标签: silverlight-4.0 caliburn.micro

所以让我这样说吧。

我有LogInViewModelLogInView。如果用户单击视图中的按钮,则会在ViewModel中调用Login()方法。现在我希望仪表板显示登录是否成功。我该怎么做呢?我在文档中找不到明确的答案。

2 个答案:

答案 0 :(得分:3)

我认为你的仪表板基本上就是你的shell。在这种情况下,您可以引导LoginViewModel,并在Login方法中,成功登录后,您可以使用Caliburn.Micro显示DashboardViewModel并关闭LoginViewModel WindowManager

像(使用MEF):

Bootstrapper.cs

public class Bootstrapper : Caliburn.Micro.Bootstrapper<ILoginViewModel>
{
  ...
}

LoginViewModel.cs

public class LoginViewModel : Screen, ILoginViewModel
{
    private readonly IWindowManager windowManager;

    private readonly IDashboardViewModel dashboardViewModel;

    [ImportingConstructor]
    public LoginViewModel(IWindowManager windowManager, IDashboardViewModel dashboardViewModel)
    {
        this.windowManager = windowManager;
        this.dashboardViewModel = dashboardViewModel;
    }

    public void Login()
    {            
        // if login success...
        this.windowManager.ShowDialog(this.dashboardViewModel);
        this.TryClose();
    }
}

答案 1 :(得分:2)

我刚在Caliburn.Micro的“实验室资源库”中添加了一个非常简单的登录示例SL4项目。

https://github.com/jenspettersson/Caliburn.Micro.Labs/tree/master/src/Login

它使用Rob Eisenberg在他的“游戏库”示例中使用的Show类来在视图之间切换。

在Login()方法中,它告诉我的Shell(您的仪表板?)显示我的LoginResultViewModel并设置登录结果消息。

yield return Show.Child<LoginResultViewModel>().In<IShell>().Configured(c => c.ResultMessage = "Successfully logged in!");

检查我的github repo中的代码。

我最近没有使用过Caliburn.Micro,所以我绝不是专家,但这种方式对我有用。

∥焦

编辑:这回答了如何在视图之间导航,如果要显示“弹出窗口”以显示登录是否成功,请使用其他推荐。