【问题标题】:Windows Phone 7, MVVM, Silverlight and navigation best practice / patterns and strategiesWindows Phone 7、MVVM、Silverlight 和导航最佳实践/模式和策略
【发布时间】:2011-02-14 09:31:12
【问题描述】:

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

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

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

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

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

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

谢谢

【问题讨论】:

    标签: silverlight mvvm silverlight-4.0 windows-phone-7


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2012-08-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-09-01
        相关资源
        最近更新 更多