代码之家  ›  专栏  ›  技术社区  ›  Michael Sync

viewmodel可以在mvvm模式中与view对话吗?

  •  6
  • Michael Sync  · 技术社区  · 16 年前

    在MVP模式中,演示者有一个视图界面,因此演示者可以调用iview.doSomething()…在mvvm模式中呢?

    根据john gossman的uml图 http://blogs.msdn.com/johngossman/archive/2006/04/13/576163.aspx ,ViewModel没有视图界面。因此,似乎viewmodel和view应该只通过绑定进行通信。(或使用附加属性或混合行为等)。

    你们觉得呢?

    4 回复  |  直到 12 年前
        1
  •  6
  •   Community Mohan Dere    9 年前

    我同意约翰·戈斯曼的观点。viewmodel与视图“对话”的方式只是通过绑定。实际上,viewmodel根本不应该关心视图。它应该简单地通过属性使数据可用,并且由视图决定它将在viewmodels中动态绑定到什么。如果viewmodel想告诉视图一些事情,这应该通过绑定隐式发生。

    一小时前也有人问过类似的问题- here 。

        2
  •  1
  •   Leom Burke Kishore Kumar    16 年前

    mvvm的全部目的是大大减少wpf表单或用户控件的代码隐藏类中的代码量。其思想是,通过使用数据绑定和/或命令的组合,可以将经典mvc/mvp中视图处理的任何内容转换到vm。在我对mvvm的一般使用中,我设法完全删除了表单/用户控件中的所有代码,vm对它所控制的视图没有直接的了解。如果你遇到了数据绑定或命令无法处理的情况,那么请详细说明你的初始问题,我(或这里众多更有天赋的mvvm用户中的一个)将试图为你指明正确的方向。

        3
  •  1
  •   kyoryu    16 年前

    它通常会通过inotifyproperty上的事件发生变化,如果没有其他变化的话。

        4
  •  1
  •   animuson    12 年前

    viewmodel可以在mvvm模式中与view对话吗?

    是的,但以一种分离的方式。允许引入接口 IVIEW 为了沟通。

    mvvm模式将把逻辑从视图移到viewmodel中。这样我们就可以对这个逻辑进行单元测试。