在MVVM中,谁负责显示其他视图,ViewModel或View?

时间:2012-04-23 23:12:41

标签: wpf mvvm separation-of-concerns

关于导航窗格的简单问题,例如Outlook使用的导航窗格。

在MVVM中,谁负责显示其他视图,ViewModel或View?

当View事件可以处理调用其他视图时,将该代码放在ViewModel中似乎很愚蠢。 ViewModel会根据需要启用/禁用和显示/隐藏导航项。

3 个答案:

答案 0 :(得分:1)

我倾向于为我拥有的每个View都有一个ViewModel,甚至可能是一个模型。如果您要传递给其他视图的信息,那么您真的需要通过ViewModel执行此操作,否则您可以通过使用视图导航来获得一种方法。希望这会有所帮助:)

答案 1 :(得分:1)

ViewModel负责视图状态。如果用户执行的任何操作都会修改视图状态,则该操作的代码属于视图模型。

我喜欢MVVM模式,因为数据绑定,但我喜欢数据绑定,因为它允许我以一种方式构建我的代码,使我可以轻松地对大部分代码进行单元测试。该结构的一个重要部分是将视图状态放在一组类中,将模型状态放在另一组中。

我认为很多时候人们试图实现MVVM,他们实际上只是为了数据绑定的目的而实现模型 - 视图关系。这没关系,因为没有理由保持抽象,如果它们没有给你带来明显的好处。

那么,你的问题的答案是你想用你的视图模型实现什么?

数据绑定?将代码放在您喜欢的任何地方。

可测性?提供关注点分离的抽象?一个纯粹且没有托运行李的模型?

然后将其放入视图模型中。

答案 2 :(得分:0)

您正在谈论使用MVVM进行导航。

我发现观看video

非常有用

这里在大约时间23:00解释了如何使用MVVM进行优雅导航的方法

希望这有帮助