Jon*_*ski 4 mvvm silverlight-4.0 mvvm-light windows-phone-7.1
实现任何模式的许多好处之一是在应用程序中的不同层之间分离关注点.在Silverlight和MVVM的情况下,我认为NavigationService属于UI.
如果NavigationService属于UI,那么它应该在后面的XAML代码中使用,但命令发生在ViewModel上.我应该在ViewModel中的Command上引发一个事件,让View处理事件并调用Navigation吗?如果我所做的只是导航到另一个页面,那听起来有点荒谬.我不应该直接处理UI事件并从那里导航吗?
查看控制事件 - > ViewModel命令 - >提升事件 - >查看处理事件 - >导航
要么
查看控制事件 - >查看处理事件 - >导航
这个问题有两种记录的方法
这两种方法仅涉及WP7应用程序中的导航.但是,它们也可以适用于Silverligt应用程序.
Jesse的方法在SL中更容易使用,因为它不需要访问根视觉.但是,导航代码分布在多个地方,需要后面的代码才能进行实际导航.
Laurent的方法需要访问root visual - 用于访问内置导航功能.如Laurent的代码所示,访问这一点在WP7应用程序中没什么大不了的.然而,在SL应用中,由于没有环绕框架,因此稍微复杂一些.但是,我在我的一个项目中实现SL的模式使用附加属性做了必要的布线 - 所以虽然需要更多的工作,但它也可用于SL.
总而言之 - 虽然,Jesse的方法更容易实现,但我个人更喜欢Laurent的方法,因为它更清晰的架构 - 不需要代码,并且功能被封装到一个单独的组件中,因此位于一个点上.
| 归档时间: |
|
| 查看次数: |
1807 次 |
| 最近记录: |