如何从命令导航到不同的页面 class

How do I navigate to a different page from a command class

所以我有一个只有一个按钮的登录页面。当您单击该按钮时,将触发一个命令,该命令获取用户名和密码并开始获取身份验证令牌。我想弄清楚的是如何处理命令的结果。例如,如果失败,我想显示一个对话框,但如果成功,我希望它导航到不同的页面。

让我感到困惑的是我在哪里可以获得页面的引用,以便我可以打开该对话框或导航离开。命令 class 引用了视图模型,但我的视图模型是在 XAML 中声明的,而不是在代码隐藏中。或者以某种方式将 CommandParameter 绑定到视图的实例?

我做错了吗?这听起来很臭吗?我对 XAML 比较陌生,所以我不知道规范是什么。感谢任何帮助。

使用 MVVM 的导航通常是最复杂的部分,我推荐

1.- 带有视图名称的视图枚举(MainView、DetailsView)

public enum AppViews
{
    MainView,
    DetailsView
}

2.- 一个名为 INavigation 的接口,其中包含一个方法 Navigate(Views view)

public interface INavigation
{
    void Navigate(AppViews view);
}

3.- 包含静态 Current INavigation 实例的 class:

public class NavigationLocator
{
    static INavigation Current { get; set; }
}

(这取决于您的 ViewModel、PCL、windows 等是如何定义的)

4.- 在应用程序中 class 实施导航:

 public void Navigate(AppViews view)
    {
        var type = Type.GetType("ProjectName." + view.ToString());

        rootFrame.Navigate(type, null);
    }

5.- 在应用程序构造器中

  public App()
  {
     NavigationLocator.Current = this;
  }

6.- 调用您的 MVVM

NavigationLocator.Current.Navigate(AppViews.DetailsView);

就是这样。