使用mvvm登录后,从登录页面导航到usercontrol

时间:2012-09-19 21:14:41

标签: silverlight mvvm navigation

我有登录页面,我在视图模型中有命令绑定登录按钮。我想从此页面导航到其他用户控件,即主页。

可以使用视图和视图模型之间的绑定来完成此操作吗?

1 个答案:

答案 0 :(得分:0)

这是一个很好的问题。我们不要忘记您首先使用MVVM的原因。 MVVM的好处是您可以分离显示代码中显示的数据。希望通过这样做,您的应用程序更容易测试,并且您可以在其上打一个不同的UI,例如WinRT,它会工作。

要求是:

  1. 您显示登录页面
  2. 用户输入凭据
  3. 您导航到应用程序页面。
  4. 但是,如果您使用NavigationService,那么当用户点击后退按钮时,他们将返回到您可能不想要的登录页面。

    在这种情况下,最好显示覆盖整个应用程序页面的Popup。然后在验证凭据时关闭弹出窗口。

    根据您更喜欢View-First还是ViewModel-First,您可以采用不同的方式构建。这是ViewModel的第一种方法:

    LogonViewModel logon = new LogonViewModel();
    
    logon.LogonSucceeded += () =>
    {
          App.DismissViewFor<LogonViewModel>(logon);
          AppViewModel appViewModel = new AppViewModel();
          App.ShowViewFor<AppViewModel>(appViewModel);
    }
    
    App.ShowViewFor<LogonViewModel>(logon);
    

    您可以使用自己的框架来实现App.DismissViewFor,App.ShowViewFor,也可以使用提供ViewLocator的Caliburn.Micro。