我有登录页面,我在视图模型中有命令绑定登录按钮。我想从此页面导航到其他用户控件,即主页。
可以使用视图和视图模型之间的绑定来完成此操作吗?
答案 0 :(得分:0)
这是一个很好的问题。我们不要忘记您首先使用MVVM的原因。 MVVM的好处是您可以分离显示代码中显示的数据。希望通过这样做,您的应用程序更容易测试,并且您可以在其上打一个不同的UI,例如WinRT,它会工作。
要求是:
但是,如果您使用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。