2012-09-19 72 views
0

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

使用视图和视图模型之间的绑定可以做到这一点?

+0

请参阅我对[此问题]的回答(http://stackoverflow.com/q/9488891/302677)。用户处于非常相似的情况。 – Rachel

回答

0

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

的要求是:

  1. 您展现一个登录页面,
  2. 用户键入他们的凭据,
  3. 您导航到应用程序页面。

但是,如果您使用NavigationService,那么当用户点击后退按钮时,他们将返回到您可能不想要的登录页面。

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

根据您更喜欢View-First还是ViewModel-First,您可以采用不同的结构。这里有一个视图模型第一种方法:

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或使用一个类似Caliburn.Micro它提供了一个ViewLocator。