Windows Phone 7,MVVM,Silverlight 和导航最佳实践/模式和策略

4
在使用MVVM模式构建Windows Phone 7应用程序时,我们遇到了一个问题:如何集中导航逻辑以符合MVVM。
举个例子,每次应用程序调用我们的Web服务时,我们都会检查我们之前分配给应用程序的登录令牌是否已过期。我们总是从Web服务返回一些状态,其中之一可能是Enum.AuthenticationExpired。
如果我们收到这个状态,我想我们应该向用户发出警报并导航回登录屏幕。(这是我们可能收到的许多状态之一)
现在,为了保持DRY(不重复自己),这种逻辑感觉应该放在一个地方。这就是我的问题所在。
如何建模依赖于(实质上)switch或if语句告诉我们下一步导航到哪里而不在每个视图中重复该逻辑的导航。
是否有人可以推荐已知的模式或技术?
谢谢
2个回答

3
听起来你有一个“状态”(你会在其中切换)后跟着一个“操作”(你将导航到哪里)。有许多方法可以处理它。其中一种方法是创建一个INavigationService,公开NavigateTo(something)方法,其中something封装了当前状态,并且该方法返回下一个状态。也许该方法还会执行页面交换本身。
另一种方法可能是创建一个IEnumerable来驱动页面,在推进应用程序时这是有意义的,但在尝试管理后退按钮时有点模糊。
使用INavigate,您可以推送和弹出页面(入队/出队),然后登录将被推送到堆栈的顶部并执行其操作,然后弹出页面以返回。

2

我不能确定具体的模式或技巧,但看起来当登录令牌过期时,你可以向前进到登录页面,而不是返回。如果对于所有状态都采用相同方法,你就能在一个地方编写状态处理逻辑并在需要时调用它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接