所以让我这样说吧。
我有LogInViewModel
和LogInView
。如果用户单击视图中的按钮,则会在ViewModel中调用Login()
方法。现在我希望仪表板显示登录是否成功。我该怎么做呢?我在文档中找不到明确的答案。
答案 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,所以我绝不是专家,但这种方式对我有用。
∥焦
编辑:这回答了如何在视图之间导航,如果要显示“弹出窗口”以显示登录是否成功,请使用其他推荐。