2011-11-17 91 views
2

我學習了幾周的WPF MVVM模式。 我還沒有清楚的理解這種模式。尋找WPF MVVM框架

我讀過這個主題https://stackoverflow.com/questions/275098/what-applications-could-i-study-to-understand-datamodel-view-viewmodel和幾乎所有引用的文章。

所有例子的問題是他們有「很多額外的東西」(菜單,幾個視圖等等)。當你需要學習如何做複雜的事情時很好,但是當你尋找可以開始的東西。

我想有一個應用程序,我可以用它來構建自己的應用程序。即我想看看它只有絕對強制性事情的應用程序,這將是我想:

  • 主窗口
  • Model類
  • ViewModel類
  • View類
  • 一些的ICommand實施? (我需要那樣的東西)?
  • 也許我失去了一些東西

回答

1

看看這個video由Jason多林格上MVVM。這是一個小例子,它經歷了創建非理想實現的過程,然後如何使用MVVM正確執行它。我發現它在MVVM上開始時非常有用。我認爲這個視頻足夠穩固,我甚至不需要看source,但也可以使用。

+0

我已經看到了這個視頻,這是diffenetly很有幫助。但是我尋找一個項目,我可以在VS中打開並作爲我的應用程序的骨架 – javapowered

2

的部分問題是,如果你想想看,大部分的這些都不是具體的事情。

如果你只想要「純粹的需求」,幾乎所有你需要的是一些ICommand實現。這是因爲下面的只是標準的WPF或C#類:

  • 主窗口 - >只需使用一個窗口
  • Model類 - >這是正常的項目數據。不得改變了MVVM
  • ViewModel類 - >這是實現INotifyPropertyChanged
  • View類只是一個普通的C#類 - >標準WPF用戶控件

你有種需要的僅僅是一個ICommand將代表路由到ICommand。這可以從任何MVVM框架(它們都至少有一個,但通常是兩個實現,一個用於Action,另一個用於Action<T>,其中參數從CommandParameter路由)。

如果你需要一個簡單的命令實現,你可以從我的MVVM Series的代碼中竊取一個。它的代碼並不是試圖成爲一個「框架」,因爲它的目標只是展示MVVM的基礎知識。

+0

好,然後我正在尋找具有所有這些東西預先創建的應用程序。這將是確定有有'字符串getHelloWorld'方法,幾類視圖和視圖模型,就勢必視圖模型和按鈕的視圖,命令「showHelloWorld」一鍵式的典範...... – javapowered

+0

@javapowered將沒有合適的「模型「 - 模型應該已經存在,因爲它是*您的特定領域邏輯和數據*。其他綁定/安裝程序都將只是您每次拆分的東西,因爲它們將根據您的數據進行設置。真的,唯一剩下的就是你從做一個標準的WPF應用程序(主窗口)以及添加一個類(VM)和一個UserControl。大多數框架模板都爲他們的消息傳遞服務設置了所有的管道,所以他們會更加精細。 –

+0

@javapowered最接近的事出有可能是在WPF工具包,但你會發現,你最終只是抓取東西展現出來的模板的幾乎每一個項目:http://wpf.codeplex.com/wikipage?title=WPF %20Model視圖查看模型%20Toolkit&referringTitle =首頁 –

0

我寫了一個非常基本的MVVM例如here如果你有興趣。

當我第一次開始學習MVVM我有你也做了同樣的問題...我無法找到任何簡單的資源來解釋MVVM非常基本的。當我試圖向其他人解釋MVVM設計模式時更加困難,所以這是我爲他整理的一個示例應用程序。我認爲這是相當簡單和直接的,所以貼在網上。

編輯:我通常使用的實際「MVVM框架」看起來更像是this link中的代碼。第一個鏈接是一個非常簡單的mvvm應用程序,只有一個頁面,但第二個鏈接以AppViewModel開頭,可以處理切換視圖。

+0

感謝, 我會查一下。我需要一些非常一般的東西。它應該像VS模板 - 「創建MVVM WPF應用程序」,它只會創建強制性的東西,而不是其他任何東西。 – javapowered

+1

@javapowered你也可以下載源代碼,它可以用作骨架應用程序。示例中的啓動對象是一個'ProductViewModel'和'ProductView',但您可以將它們更改爲任何您想要的。它還包括您需要的通用對象,例如'RelayCommand'和'NotificationObject'(實現'INotifyPropertyChanged'的對象)。我實際上建議一旦使用MVVM,就可以進入微軟的PRISM庫或MVVM Light Toolkit,但是我想保持簡單的例子並將第三方庫從其中排除。 – Rachel

+1

@javapowered:閱讀這篇文章:http://msdn.microsoft.com/en-us/magazine/dd419663.aspx。然後按照雷切爾的建議。進入框架,他們可以幫助你很多,即使你沒有使用**全部**。 PRISM是我的最愛。它使得創建模塊化,解耦應用變得非常簡單。它有一個學習曲線來理解如何設置並使球滾動,但是一旦你瞭解它,這是驚人的。該指南也很好。它在劃分它所涉及的關鍵領域方面做得很好:模塊化,導航,通信,依賴等。 –