代码之家  ›  专栏  ›  技术社区  ›  Jordan Parmer

有了MVVM,每个UI窗口都有自己的ViewModel吗?

  •  1
  • Jordan Parmer  · 技术社区  · 16 年前

    我的直觉告诉我每个视图都有一个ViewModel(即每个单独的UI窗口)。MVVM的所有博客示例都显示了一个视图,但仅此而已。

    3 回复  |  直到 16 年前
        1
  •  3
  •   Nick DeVore    16 年前

    是的,基本上您的视图模型应该只被一个视图使用。如果使用viewModel填充一个区域(如在ASP.NET MVC中),则每当视图显示在不同的位置时,都会“重用”该viewModel。

    这个 article article 他认为乔希漏掉了什么,同时坚持认为乔希的工作仍然很强大。

    沃德在阐述这种模式的复杂性和显示存在的紧张方面做得非常出色。以下是他对紧张局势的看法:

    请注意视图开发人员的提示。

    另一方面,在业务应用程序中,应用程序要求视图必须做些什么来满足业务需求,这是程序员的职责,并且是>通过ViewModel的功能进行最佳表达。

    在视图和视图模型设计之间存在着必要的张力。作为一名开发人员,我的忠诚是ViewModel(应用程序应该做一些有价值的事情),但以牺牲视图为代价来捍卫这种忠诚是愚蠢的(一个好的用户体验对于使应用程序易于学习和使用是必不可少的)。

        2
  •  3
  •   J Rothe    16 年前

    对我来说,这是一个主观的陈述-教科书,我会说,绝对是1-1配对-当然,积极主动,通过1-1来设定范例没有错,如果您有多个视图,每个视图代表同一数据的一个片段,则不必每个视图都有一个视图-您可以跨多个视图重用同一个视图,直到出现偏差为止。视图模型是ui和业务层之间的桥梁…如果业务功能相同,您要么将拥有一个通用的视图模型接口或基础并向下转换,要么将同一逻辑复制多次。如果视图是唯一改变的东西,那么在出现偏差之前,重用同一视图模型没有问题。

        3
  •  1
  •   Thomas Weller    16 年前

    我不太了解WPF,但通常ViewModel在UI组件和业务逻辑组件之间进行中介。换句话说:它特定于视图/模型对-这是该组件存在的唯一原因。。。

    嗯。