1

所以让我这样说。

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

4

2 回答 2

3

我假设您的仪表板本质上是您的外壳。在这种情况下,您可以引导您的LoginViewModeland 在Login方法中,成功登录后,您可以使用 Caliburn.Micro显示DashboardViewModel和关闭。 LoginViewModelWindowManager

类似的东西(使用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();
    }
}
于 2011-03-01T10:34:51.227 回答
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 存储库中的代码。

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

//J

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

于 2011-03-01T11:09:26.523 回答