代码之家  ›  专栏  ›  技术社区  ›  Martin Moser

如何将MVVM应用于此方案

  •  2
  • Martin Moser  · 技术社区  · 15 年前

    我在问自己如何在以下场景中正确地应用MVVM: 假设我有简单的主细节数据,比如一个地址为0-N的人。 地址应该显示在列表框中,用户应该能够为每个地址触发证书操作。

    所以我所做的就是创建一个返回人员模型和地址模型的虚拟机。 问题是,我想在地址数据模板中创建按钮。但是要使按钮工作,我需要一个由每个地址公开的命令,该命令可以绑定到按钮的相应属性。

    我的问题是,如果它真的是将(在本例中)每个地址包装到另一个对象中的正确方法,而该对象公开了必要的功能?我希望避免维护地址视图模型的第二个列表,这取决于第一个列表对模型对象的更改。

    蒂亚 马丁

    1 回复  |  直到 15 年前
        1
  •  2
  •   Mark Seemann    15 年前

    这听起来是正确的方法。

    将UI直接绑定到域模型类总是非常诱人的,但是经验表明,您也可以在UI和域模型之间滑动一个视图模型。这样可以确保特定于UI的成员(如您提到的ICommand属性)留在UI中,并且不会侵入域模型。

    在某些情况下,域模型 几乎 适合,甚至完全适合预期的用户界面。在这些情况下,很难抵制将域模型直接绑定到视图的冲动。

    然而,视图特定的需求很可能会在稍后出现,然后您将面临不得不在当时引入一个视图模型的情况,而这通常是您没有时间做这件事的时候。

    如果您可以简单地说:“所有域对象都包装在一个视图模型中,然后绑定到视图中,那么它还可以使您的应用程序体系结构更容易理解。”