4

在构建 Windows Phone 7 应用程序时。使用 MVVM 模式,我们一直在努力掌握一种模式或技术来集中适合 MVVM 的导航逻辑。

举个例子,每次应用程序。调用我们的 Web 服务,我们检查我们分配给应用程序的登录令牌。之前还没过期。我们总是从 Web 服务向手机返回一些状态,其中之一可能是 Enum.AuthenticationExpired。

如果我们收到,我想我们会提醒用户并导航回登录屏幕。(这是我们可能收到的许多状态示例之一)

现在,想要保持干燥,那种逻辑感觉应该放在一个地方。我的问题就在于此。

我应该如何对依赖于(基本上)switch 或 if 语句的导航建模来告诉我们下一步导航到哪里而不在每个视图中重复。

是否有人可以推荐公认的模式或技术?

谢谢

4

2 回答 2

3

听起来您有一个“状态”(您将打开的东西),然后是一个动作(您将导航到的位置)。有很多方法可以处理它。一种方法是创建一个 INavigationService,它公开 NavigateTo(something) 方法,其中封装了当前状态,该方法返回下一个状态。也许该方法本身也会执行页面交换。

另一种方法可能是创建一个驱动页面的 IEnumerable,这在向前驱动的应用程序中是有意义的,但在您尝试管理后退按钮时会变得有点模糊。

使用 INavigate,您可以推送和弹出页面(入队/出队),然后登录将被推送到堆栈顶部并执行其操作,然后弹出页面以返回。

于 2010-05-01T14:47:28.040 回答
2

我不能说具体的模式或技术,但是当登录令牌过期时,您似乎可以向前导航到登录页面,而不是返回。如果您对所有状态执行相同的操作,您将能够在一个地方编写您的状态处理逻辑并在需要的地方调用它。

于 2010-05-01T13:23:28.627 回答