2012-07-19 89 views
2

我有一个WPF应用程序应该是紧凑的,尽可能少的内存占用。从流动,几页和网格的角度来看,GUI很简单,但从图形,动画等角度来看非常丰富。如果我担心内存使用情况,应该避免使用MVVM吗?

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

我应该使用MVVM吗?

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

+2

[MvvmLight工具包(http://mvvmlight.codeplex.com/)是非常非常轻巧。事实上,这就是我使用这个框架的原因。它做MVVM,只有MVVM。 – 2012-07-19 13:49:18

+1

另外,请看[Caliburn Micro](http://caliburnmicro.codeplex.com/)。 – Eddie 2012-07-19 14:02:11

+0

我做了一些编辑,以消除这个关闭的额外问题,并投票重新打开这个。 – Rachel 2012-07-19 18:12:07

回答

6

是,使用MVVM如果你与WPF

WPF设计让您拥有一个用户界面层和数据层的工作,而这完全适合MVVM设计模式。我发现它使编码和维护更加快速和简单。

您不必使用完整的MVVM框架,甚至不必使用任何MVVM框架。您可以挑选您感兴趣的部分(继承INotifyPropertyChangedRelayCommandDelegateCommand,消息传递系统等的基础对象),并放弃所有其他部分。或者你可以建立自己的。

开销的数量是最小的,绝对不值得避免使用模式,但是一些MVVM框架确实包含了不必要的功能并且可能会导致一些开销,所以请确保您只挑选出您想要的部分。

问题是,如果您使用WPF,请使用MVVM设计模式。它会让你的生活,以及任何未来的开发人员在项目中工作,生活更容易:)

4

我真的会推荐使用MVVM。

我们在一个巨大的工程中使用的模式,效果不错,有以下建议:

  • 我们使用了非常有用的,因为它的名字说,光,MVVM Light Toolkit LIB
  • 我们不这样做使用ViewModelLocator的东西。在动态实例化视图时太难以使其工作。在代码隐藏的好老this.Datacontext = new TheViewModel();是好的
  • 我们不使用Messenger的东西。太复杂了很少的好处。从视图模型中解雇一个很好的旧事件是IMO更简单的方法。
  • 我们不使用EventToCommand事物,这在很多情况下使XAML变得复杂。
  • 当代码与视图完全相关时,我们会编写代码。对于鼠标手势功能(拖动&下拉...)或其他特定的UI事物,代码隐藏对控制事件处理来说是很好的。
2

首先:是的,MVVM是一个建议的方式如何构建一个C#/ WPF应用程序

二:你可以不框架使用MVVM的话,那么它为你打造的轻量级它。

在这里寻找可能的MVVM框架概述: SO in depth discussion of different MVVM frameworks