2010-04-30 66 views
4

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

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

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

现在,想要让事情保持干爽,那种逻辑感觉应该在一个地方。这是我的问题。

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

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

感谢

回答

3

这听起来像你有一个“状态”(你会打开的),然后是行动(你将导航到)。有很多方法可以处理它。一种方法是创建一个显示NavigateTo(something)方法的INavigationService,其中某些内容封装了当前状态,并且该方法返回下一个状态。也许这种方法也会执行页面交换本身。

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

使用INavigate,您可以推送和弹出页面(入队/出队),然后登录将被推到栈顶并完成它的操作,然后弹出页面返回。

+0

太好了,谢谢,我会嘲笑它,并给它一个去。 – 2010-05-01 18:27:51

2

我不能说具体模式或技术,但它看起来像你可以导航到登录页面,而不是背部,当登录令牌已过期。如果你对所有状态都做同样的事情,你将能够在一个地方编写你的状态处理逻辑,并在需要的地方调用它。