如何从命令类导航到其他页面

时间:2015-08-22 21:50:59

标签: .net xaml win-universal-app

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

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

我是否会犯这个错误;这听起来有点臭吗?我对XAML比较陌生,所以我不知道规范是什么。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:1)

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

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

public enum AppViews
{
    MainView,
    DetailsView
}

2.-一个名为INavigation的接口,它包含一个方法Navigate(视图视图)

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

3.-包含Current INavigation实例的类为static:

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

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

4.-在App类中实现INavigation:

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

        rootFrame.Navigate(type, null);
    }

5.-在App构造函数中

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

6.-调用MVVM

NavigationLocator.Current.Navigate(AppViews.DetailsView);

那就是它。