所以让我这样说。
我有一个LogInViewModel
和一个LogInView
。Login()
如果用户单击视图中的按钮,ViewModel 中有一个方法会被调用。现在我希望仪表板显示登录是否成功。我该怎么做呢?我在文档中找不到明确的答案。
所以让我这样说。
我有一个LogInViewModel
和一个LogInView
。Login()
如果用户单击视图中的按钮,ViewModel 中有一个方法会被调用。现在我希望仪表板显示登录是否成功。我该怎么做呢?我在文档中找不到明确的答案。
我假设您的仪表板本质上是您的外壳。在这种情况下,您可以引导您的LoginViewModel
and 在Login
方法中,成功登录后,您可以使用 Caliburn.Micro显示DashboardViewModel
和关闭。 LoginViewModel
WindowManager
类似的东西(使用MEF):
引导程序.cs
public class Bootstrapper : Caliburn.Micro.Bootstrapper<ILoginViewModel>
{
...
}
登录视图模型.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();
}
}
我刚刚在我的“实验室存储库”中为 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 存储库中的代码。
我最近很少使用 Caliburn.Micro,所以我绝不是专家,但这种方式对我有用。
//J
编辑:这回答了如何在视图之间导航,如果您想显示“弹出窗口”以显示登录是否成功,请使用其他建议。