如何从命令导航到不同的页面 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);
就是这样。
所以我有一个只有一个按钮的登录页面。当您单击该按钮时,将触发一个命令,该命令获取用户名和密码并开始获取身份验证令牌。我想弄清楚的是如何处理命令的结果。例如,如果失败,我想显示一个对话框,但如果成功,我希望它导航到不同的页面。
让我感到困惑的是我在哪里可以获得页面的引用,以便我可以打开该对话框或导航离开。命令 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);
就是这样。