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