0

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

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

4

1 回答 1

0

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

要求是:

  1. 你显示一个登录页面,
  2. 用户输入他们的凭据,
  3. 您导航到应用程序页面。

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

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

根据您更喜欢 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 或使用像 Caliburn.Micro 这样提供 ViewLocator 的框架。

于 2012-09-20T07:53:28.373 回答