所以我有一个只有一个按钮的登录页面。当您单击该按钮时,将触发一个命令,该命令将获取用户名和密码,然后关闭以获取身份验证令牌。我想弄清楚的是如何处理命令的结果。例如,如果失败,我想显示一个对话框,但如果成功,我希望它导航到另一个页面。
我感到困惑的地方是我可以获取对页面的引用,以便我可以打开该对话框或导航。命令类具有对视图模型的引用,但我的视图模型在XAML中声明,而不是在代码隐藏中声明。或者可能以某种方式将CommandParameter绑定到视图的实例?
我是否会犯这个错误;这听起来有点臭吗?我对XAML比较陌生,所以我不知道规范是什么。任何帮助表示赞赏。
答案 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);
那就是它。