2

我有一个 WPF 应用程序,它应该是紧凑的,内存占用最少。GUI从流程的角度来看很简单,页面和网格很少,但从图形、动画等的角度来看却相当丰富。

我有使用 Prism 编写应用程序的经验,我非常喜欢它。但对于简单的任务来说,它看起来太重了。它不是 LOB 应用程序,但我仍然需要可测试性、GUI/流/业务分离等。

我应该使用 MVVM 吗?

我不确定在尝试最小化应用程序的内存使用时是否应该担心使用 MVVM 设计模式的开销。

4

3 回答 3

6

是的,如果您正在使用 WPF,请使用 MVVM

WPF 被设计成有一个 UI 层和一个数据层,这非常适合 MVVM 设计模式。我发现它使编码和维护变得更快、更容易。

您根本不必使用成熟的 MVVM 框架,甚至任何 MVVM 框架。您可以选择您有兴趣使用的部分(继承的基础对象、INotifyPropertyChangedRelayCommandDelegateCommand消息传递系统等),然后删除所有其余部分。或者你可以建立自己的。

开销很小,绝对不值得避免这种模式,但是一些 MVVM 框架确实包含不需要的功能并且可能会导致一些开销,因此请确保您只从中挑选出您想要的部分。

关键是,如果您使用 WPF,请使用 MVVM 设计模式。这将使您的生活以及从事该项目的任何未来开发人员的生活变得更加轻松:)

于 2012-07-19T14:03:18.287 回答
4

我真的会推荐使用 MVVM。

我们在一个大型项目中使用了该模式,并且效果很好,有以下建议:

  • 我们使用非常有用的,顾名思义,light,MVVM Light Toolkit lib
  • 我们不使用 ViewModelLocator 的东西。当您动态实例化视图时,很难让它工作。this.Datacontext = new TheViewModel();代码隐藏中的老好人很好
  • 我们不使用 Messenger 的东西。太复杂了,收益很少。从视图模型触发的一个很好的旧事件比 IMO 更简单。
  • 我们不使用 EventToCommand 东西,这在很多情况下会使 XAML 变得复杂。
  • 当代码纯粹与视图相关时,我们确实在后面编写代码。对于鼠标手势功能(拖放...)或其他特定的 UI 事物,代码隐藏非常适合控制事件处理。
于 2012-07-19T14:04:06.150 回答
2

首先:是的,MVVM 是一种推荐的方式来构建 C#/WPF 应用程序

第二:您可以使用 MVVM 根本没有框架,那么它就像您构建它一样轻量级。

在此处查看可能的 MVVM 框架的概述: SO in deep discussion of different MVVM frameworks

于 2012-07-19T14:09:37.903 回答