【发布时间】:2014-07-31 20:32:46
【问题描述】:
我有一个涉及登录的 Windows 通用应用程序。 这种应用程序的典型场景是不同的状态。例如,用户是否是第一次登录,或者用户之前已经登录并再次重新打开应用程序。这里的动作取决于状态
IfLoggedIn - 显示主页 || IfNotLoggedIn - 显示登录页面
现在根据条件(状态)我们必须显示不同的页面。
我的问题与this 类似,但我想了解如何在 MVVM 中实现相同的功能以及放置此条件逻辑的正确位置。
将它放在 app.xaml.cs 中会解决问题,但会弄乱您的 app.xaml.cs 并违反 MVVM,因为 ViewModel 不处理交互逻辑。
我尝试过的解决方案是
- 创建一个中间页面(Intermediate.xaml)。
- 为上面创建对应的ViewModel(IntermediateViewModel.cs)。
- 在此 ViewModel 的构造函数中包含条件语句以决定要导航的页面。
让我们假设我在布尔变量 IsLoggedIn 中有我的条件。条件检查放在哪里?
我的IntermediateViewModel中的代码如下
public bool IsLoggedIn {get; set;}
//IsLoggedIn contains the condition of whether the user is logged-in or not-logged-in
public IntermediateViewModel()
{
if (IsLoggedIn == false)
{
NavigationService.Navigate("LoginPage");
}
else if (IsLoggedIn == true)
{
NavigationService.Navigate("HomePage");
}
}
这个解决方案的问题是现在您的后台堆栈中多了一个页面(Intermediate.xaml)。有没有办法摆脱这个?
This 和类似的解决方案似乎不再与 Windows 通用应用程序(Windows 8.1/Windows Phone 8.1)相关。
有谁知道如何使用 MVVM 以正确的方式实现这一点?
【问题讨论】:
标签: c# mvvm windows-8.1 windows-phone-8.1 win-universal-app