关于导航窗格的简单问题,例如 Outlook 使用的导航窗格。
在 MVVM 中,谁负责显示其他视图,ViewModel 还是 View?
当 View 事件可以处理调用其他视图时,将该代码放在 ViewModel 中似乎很愚蠢。ViewModel 会根据需要启用/禁用和显示/隐藏导航项。
关于导航窗格的简单问题,例如 Outlook 使用的导航窗格。
在 MVVM 中,谁负责显示其他视图,ViewModel 还是 View?
当 View 事件可以处理调用其他视图时,将该代码放在 ViewModel 中似乎很愚蠢。ViewModel 会根据需要启用/禁用和显示/隐藏导航项。
ViewModel 负责视图状态。如果用户执行的任何操作恰好修改了视图状态,则该操作的代码属于视图模型。
由于数据绑定,我喜欢 MVVM 模式,但我喜欢数据绑定,因为它允许我以一种易于对我的大部分代码进行单元测试的方式来构建我的代码。该结构的很大一部分是将视图状态放在一组类中,将模型状态放在另一组中。
我认为很多时候人们试图实现 MVVM,他们实际上只是为了数据绑定而实现了模型-视图关系。这很好,因为如果抽象不能为您提供明显的好处,就没有理由维护它们。
所以,你的问题的答案是你想用你的视图模型实现什么?
数据绑定?将代码放在您喜欢的任何地方。
可测试性?提供关注点分离的抽象?一个纯粹且没有视觉包袱的模型?
然后把它放在视图模型中。
我倾向于为我拥有的每个视图都有一个 ViewModel,甚至可能还有一个模型。如果您将信息传递给其他视图,那么您确实需要通过 ViewModel 执行此操作,如果没有,那么您可以通过仅使用视图进行导航来获得一种方法。希望这可以帮助 :)