代码之家  ›  专栏  ›  技术社区  ›  Reed Copsey

什么使得MVVM独特地适合WPF?

  •  9
  • Reed Copsey  · 技术社区  · 16 年前

    这个 Model-View-ViewModel 在WPF和Silverlight中非常流行。我在最近的项目中使用过这个,并且是一个非常大的粉丝。

    我知道这是对 MVP . 但是,我想知道WPF(和Silverlight)的哪些独特特性允许MVVM工作,并防止(或至少使)这种模式使用其他框架或技术工作。

    我知道MVVM非常依赖于WPF中强大的数据绑定技术。这是许多文章和博客都提到的一个特性,它是WPF的关键,它提供了将视图与ViewModel强烈分离的方法。但是,数据绑定存在于 many forms 在其他UI框架中。甚至还有这样的项目 Truss 为.NET中的POCO提供WPF样式的数据绑定。

    除了数据绑定之外,还有哪些功能使WPF和Silverlight特别适合模型视图ViewModel?

    4 回复  |  直到 16 年前
        1
  •  7
  •   Carlo    16 年前

    数据绑定、命令、控制模板和XAML。

    如果没有这些,MVVM将更难,如果不是不可能的话。以ASP.NET为例,它有ASPX部分(就本例而言,它相当于XAML),它有数据绑定,但它没有命令或控制模板,因此MVVM不可能存在。在Winforms中,我们有数据绑定,这差不多就是它了,所以也不可能。

        2
  •  2
  •   Ryan Michela    16 年前

    简而言之:这是数据绑定。

    每个 Data Binding Overview from MSDN :

    如果绑定具有正确的设置,并且数据提供了正确的通知,那么当数据更改其值时,绑定到数据的元素将自动反映更改。数据绑定还意味着,如果元素中数据的外部表示形式发生更改,则可以自动更新基础数据以反映更改。例如,如果用户编辑文本框元素中的值,则基础数据值将自动更新以反映该更改。

    如果正确设置了XAML,则只需使用ViewModel与用户界面进行交互。WPF负责在ViewModel更改时更新UI,并在UI更改时更新ViewModel(例如用户输入)。

        3
  •  2
  •   Andrew Shepherd    16 年前

    我已经实现了MVVM的表亲模式 Model-View-Presenter 在MFC、WinForms甚至Matlab中。我同意最初的观点:WPF非常方便数据绑定,但是您可以在其他平台中使用这些概念(尽管使用了更多的代码)。

    阅读 John Grossman's 博客,真正的区别在于用户界面是用不同于业务逻辑的语言编写的。理想情况似乎是UI开发是由“设计师”而不是程序员来执行的。

    这是WPF所独有的领域——我不知道还有什么其他的开发环境可以实现这一理想。

    (请注意,我从来没有在一个足够大的团队中工作过,以保证专门的用户界面设计师。我不能说这个理想是否真的可以实现)。

        4
  •  1
  •   Dzmitry Huba    16 年前

    我认为命令式支持(icommand)除了具有强大的数据绑定功能外,还适合于WPF和Silverlight。