【问题标题】:What is it in MVVM that makes it particularly appealing for managed WPF and Silverlight but not native C++?MVVM 中的什么使其对托管 WPF 和 Silverlight 尤其有吸引力,但对本机 C++ 没有吸引力?
【发布时间】:2011-02-24 13:19:42
【问题描述】:
  1. 是 WPF 和 Silverlight 中的什么让 MVVM 如此适合他们?
  2. 是什么在 C++ 中,或者 C++ 缺乏什么,使得 MVVM 和 C++从不一起被提及?

【问题讨论】:

  • 我一直想知道这个。

标签: c# .net c++ design-patterns mvvm


【解决方案1】:

MVVM(模型 - 视图 - 视图模型)是对 MVP(模型 - 视图 - 演示者)或 MVC(模型 - 视图 - 控制器)模式的改编,这两种模式都是 C++ 应用程序中非常流行的设计模式。设计模式的主要变化是更好地支持 WPF 和 Silverlight,因此 WPF 不适合 MVVM,更多的是 MVVM 适合 WPF。

这些更改主要围绕通过使用INotifyPropertyChangedICommand 对象来干净地支持XAML 技术中存在的绑定和命令体系结构。再一次,这些更改对 C++ 没有帮助,因为它对这些高级概念没有任何本机支持。这并不是说您不能在 C++ 中模仿所有这些功能,而是在此过程中您会使用基本的 MVP/C 模式并且在大多数情况下“足够好”。

【讨论】:

    【解决方案2】:

    这实际上与 C++ 或任何语言本身无关,更多的是因为它仅在 WPF/Silverlight 上下文中才有意义。

    MVVM 带来的唯一其他视图/逻辑分离模式没有的就是 WPF/Silverlight 命令/绑定。使用 MVVM 的主要原因是利用 WPF/Silverlight 中内置的强大绑定系统,除非它们具有相似的模型,否则在不同的上下文中谈论它是没有意义的。

    【讨论】:

      【解决方案3】:

      一句话:Binding

      【讨论】:

        【解决方案4】:

        我认为MVVM 是专门为支持 WPF 而设计的。看起来微软专门开发了这种模式来支持他们为 WPF/Silverlight 设想的开发人员/设计人员工作流程。

        因此,您可能在 WPF/Silverlight/XAML 世界之外没有过多了解它的原因有两个。

        1. 它是为 WPF 设计的
        2. 没有人试图在 C++ gui 框架中支持(在相同程度上)这些设计人员/开发人员工作流。

        【讨论】:

          最近更新 更多