2010-08-31 104 views
8

我看了看一些問題在這裏堆棧溢出就像this & mix10 building your own mvvm framework啓動WPF MVVM。使用框架?

我不知道作爲一個初學者它能夠更好地從頭開始(但我從VID,它不建議聽說的),或者使用一個框架

哪個更適合作爲初學者框架學習?我發現在閱讀了不少文章甚至是教程視頻之後,我仍然很失落。我可能會在這裏和那裏得到零件,但仍然不存在。

caliburn micro一個容易學習的小框架?或者像MVVM工具箱或Unity/Prism這樣的微軟的東西(最新的所有MS框架順便說一句)? MVVM Light?

+0

根據我們的[主題](https://stackoverflow.com/help/on-topic)指導原則,「**有些問題仍然存在問題,即使它們符合上面列出的某個類別:** ...問題要求我們*推薦或找到一本書,工具,軟件庫,教程或其他非現場資源*是脫離主題......「 – 2018-02-28 02:04:25

回答

10

我的$ 0.02:

我使用WPF /的MVVM模式在幾個星期前,一個路徑我可以肯定地建議首先開始測試項目,閱讀了很多關於MVVM開始,並試圖自己實現它(即使它只是使用其他人的東西的一部分)。 實施一些東西,閱讀更多內容,回去改變內容,然後閱讀更多內容。

在前兩週做到這一點,您將會了解它實際上的全部內容,您會看到一些問題並找到一些解決方案等等。 基本上,這將獲得您的手指mvvm想法,並給你一些實踐經驗。

然後,如果你喜歡,你可以扔掉你的測試項目,據此決定是否或不真正開始寫自己的東西,或者使用現有的工具包,並可能有辦法的現有工具包的工作更加了解和理解。

我最終沒有使用現有的工具包,而是自己實現的非常簡單的實現,因爲我並不需要太多複雜的項目,但是我確實對我在互聯網上討論的某些實現獲得了更多讚賞。

編輯: 當我談到「兩個星期」我的意思是「兩個星期業餘的」,這是大約25小時實時;-)

+0

我想我花了很多時間,我想abt 3天(〜= 24小時!!!哦,我相當失敗)?相當完整的日子...但沒有得到太多...是的,我確實嘗試了caliburn微與他們的介紹你好世界的應用程序,成功......卡在他們的MEF部分......查看了不少視頻。甚至棱鏡的,仍然困惑...... – 2010-08-31 15:56:34

+2

這正是我建議不要以框架開始的原因。這些框架由於其龐大的規模和功能列表而可能非常過分。如果您對MVVM沒有經驗,那麼您可能無法理解這些功能中99%的功能。 如果您自己開始編寫一個非常簡單的MVVM實現,您將遇到一些問題,並且您將瞭解到處理它們的不同方法。 通過這種方式,您將在一段時間後瞭解到框架將不再是黑魔法 - 然後您可以考慮繼續構建自己的系統或切換到現有框架。 – Pygmy 2010-08-31 19:08:05

+0

我有同樣的,我沒有使用框架(至少不是我所知道的),只是複製了一些類的部分並使用它。我有一個合理規模的愛好項目(大約20K行),現在窗口更新變得複雜而沒有MVVM。 – 2012-02-10 15:03:47

11

IMO,有沒有必要使用一個框架。 MVVM只是一種做事的方式。

首先,您只需要一個RelayCommand類,因此您可以將命令綁定到您的viewModel。您可以從Josh Smith MVVM Foundation

下載它,然後當你越高級,你可以添加其他類,如:

  • ObservableObject:這是爲了對 視圖模型類型的基類,或任何類型的必須 提供屬性更改通知。 它執行INotifyPropertyChanged ,並在調試版本中,將驗證通過 PropertyChanged事件傳遞的所有屬性名稱 屬性是有效的 屬性。這個類曾經是 叫ViewModelBase

  • 信使:信使類是通過誰也不需要知道的 彼此不同的視圖模型 對象之間 消息的輕量級的方式。這是基於 Marlon Grech和Josh Smith創建的 Mediator實現,如Marlon博客上的 所示。

0

我認爲這將是更好的開始與Hello World應用程序。慢慢熟悉控件(listview,gridivew ...)以及基本的wpf概念(綁定,模板,觸發器......)。之後,您可以轉到MVVM。

3

從我的角度來看,如果你正在學習WPF/MVVM爲自己,那麼你必須深入學習MVVM並嘗試從頭構建一個框架(由愛德華解釋)

但如果你已經開始用商業項目或企業應用程序,那麼你必須考慮使用一些成熟的框架,如PRISM或Caliburn或MVVM Light Toolkit。

我的第一個項目中沒有使用過任何框架,我有點後悔。雖然沒有出錯,但建立自己的框架並不是很困難(就像Eduardo所說的那樣),但是花了我們很多時間,沒有。在完成各種基類等方面的迭代。另外,我們無法利用這些框架中已經實現的各種東西(因爲我們根本不知道它們)。