2012-07-19 88 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