【问题标题】:What are the main drawbacks of using Presentation Model in code behind?在后面的代码中使用 Presentation Model 的主要缺点是什么?
【发布时间】:2011-01-11 07:48:57
【问题描述】:

我正在努力让自己准备好接受这个问题的挑战:

“为什么我们不能在后面的代码中实现表示模型?”

事实上,我曾参与过一个项目,其中我们使用了在后面的代码中实现的表示模型。它工作得相当好,我们甚至能够在它上面运行单元测试。是的,您在单元测试中依赖于 WPF……但它确实有效!

那么,使用代码背后的主要缺点是什么?

我确实更喜欢独立 ViewModel (MVVM) 的想法,但目前我觉得无法向客户证明它的合理性。

【问题讨论】:

    标签: .net wpf mvvm presentation-model


    【解决方案1】:

    您回答了问题的第一部分,必须在单元测试期间引导 wpf 应用程序。另一个是可移植性,您是否希望能够将不同的视图实现附加到同一个表示模型。 (我知道很弱,但它就是你所拥有的)

    还有技能集的分离,只有了解 xaml 的开发人员才会参与视图的实际创建。让您利用现有的不了解 wpf 的内部人才。

    【讨论】:

      【解决方案2】:

      直接的答案是principle of separation of concerns。当然,有人可能会争辩说,通过将表示模型放在代码隐藏中,它与视图 (XAML) 是分开的,但我不同意这一点。代码隐藏可以“看到”视图的所有内部细节,因为它视图。 xaml 和代码隐藏一起编译为一个类以成为视图。它们根本不是分开的。

      在许多示例中,您必须进入代码隐藏来执行与视图相关的工作,例如连接无法在 Xaml 中指定的控件之间的交互。完成此操作后,您现在可以将视图逻辑与表示逻辑混合在一起。

      ViewModel 的概念非常强大。 ViewModel 可以相互“交谈”,而 View 彼此之间“交谈”,甚至 ViewModel 不“知道”关于视图的任何事情。

      【讨论】:

      • 不错,但到目前为止我还没有找到任何答案非常令人信服……这似乎有很大的心理因素。大概有后面的纪律代码可以正常工作吗?猜猜这将是迫使低级开发人员做正确事情的好方法
      • @Schneider:就像你可以用直接的 C 而不是 C++ 或 C# 编写面向对象的代码一样,是的,它可以正常工作。 ;)
      【解决方案3】:

      查看这两个视频以了解一些想法。两个视频都展示了从代码中的所有内容开始开发应用程序,然后重构为 MVVM 模式。

      另外,请参阅此 SO 问题以获取更多链接:MVVM: Tutorial from start to finish?

      【讨论】:

        【解决方案4】:

        当您使用 ViewModel-First 方法时,它会成为一个缺点。在您的主应用程序中,您实例化 ViewModel 对象图,将其分配给根视图数据上下文,然后让视图根据 ViewModel 通知呈现其相关子项。

        为什么这是一个缺点?事实上你可以在后面使用你的代码,但你最终会得到一堆tricks,有时应该forgot your application security。 但实际上这种方法是理想的方法,您的视图模型完全无知,即使您可以先通过程序反转您的开发过程 - 后皮肤。 (开玩笑)

        另一方面,如果你使用 View-First 方法,那么不会有任何缺点,因为 viewmodel 就在上面。 因为如果你需要一些棘手的东西,控制仍然在 View 中使用密码框然后就像微软命中注定的那样自然而然地做到这一点..

        希望对您有所帮助。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-11-20
          • 2011-06-30
          • 2023-03-21
          • 2012-11-10
          • 2010-12-15
          • 1970-01-01
          • 2014-02-09
          • 2010-09-30
          相关资源
          最近更新 更多