2021-05-12 14:32:11
[Windows] 在 Microsoft Docs 網站中挖掘 MVVM 的各種學習資源
最近寫了一些 MVVM 框架的文章,翻了一些 Microsoft Docs 的檔案,順便就對 MVVM 本身來了興致,想看看更多當年相關的檔案。在 MVVM 出現後十多年,我在不同的場合見到過多種 MVVM 的實現方式,也看到過各種 MVVM 框架的多次改進(這些框架通常包含多個用於實現解耦體系結構的服務,在一定程度上使 MVVM 的確切定義變得模糊),這些都讓我對 MVVM 的理解變得多樣化。這種情況下重溫一下 MVVM 的檔案也並不是毫無意義。
在 Microsoft Docs 網站上搜 「MVVM」 關鍵字有 200 多個結果,搜 ViewModel 關鍵字有 1400 多個結果,要全部看完顯然太多。我一邊回顧/重溫,一邊整理了一些有趣的檔案以供參考。
1. MSDN 雜誌
首先是 MSDN 雜誌。在發行 30 多年後,MSDN 雜誌完成了它的使命。今天我們仍可以在 Microsoft Docs 上找到當年的 MSDN 雜誌的存檔,其中關於 MVVM 的內容也有不少。雖然也有介紹如何使用 MVVM 框架的文章,但難道使用 MVVM 就一定要用框架嗎,MVVM 豈是如此不便之物。下面我只列出了 MSDN 雜誌中關於 MVVM 本身的內容。部分中文翻譯的文章我直接給出中文地址,其它則是英文原文。
-
Patterns - WPF Apps With The Model-View-ViewModel Design Pattern
-
Maximizing the Visual Designer’s Usage with Design-Time Data
2. Prism
接下來看看 Prism。Prism 本來由微軟 patterns & practices 團隊領導,後來 離家出走,現在的新家在 Github,也有了獨立的 官方檔案。雖然分開了,可是微軟倒是挺念舊,搬了新家也帶著 Prism 的舊檔案。可別以為這份 2014 年的舊檔案年紀大了就沒用了,先來看看這個 6 歲的老同志的介紹:
Prism以範例和檔案的形式提供指導,幫助您輕鬆設計和構建豐富、靈活、易於維護的 Windows Presentation Foundation(WPF)桌面應用程式。使用包含重要架構設計原則(如關注點分離和鬆耦合)的設計模式,Prism可以幫助您使用鬆散耦合元件設計和構建應用程式,這些元件可以獨立演化,但可以輕鬆無縫地整合到整個應用程式中。簡而言之,這些應用程式是「為持久而構建」和「為改變而構建的」。這些型別的應用程式被稱為複合應用程式。
Prism 並不僅僅是一個 MVVM 框架,它還是微軟曾經給出的最好的 Wpf 實踐指導。這份總建議閱讀時間超過 7 小時的檔案是微軟 patterns & practices 團隊交給 Wpf 開發者的最後的波紋。它解釋了 Wpf 不同於 WinForms 的 UI互動,並介紹了架構設計原則、包含 MVVM、依賴注入在內的多種設計模式以及 Prism 的使用和實現原理,還有各種模式的程式碼範例,通過閱讀這些檔案,我敢保證,你的英語會變好一些。
-
2: Initializing Applications Using the Prism Library 5.0 for WPF
-
3: Managing Dependencies Between Components Using the Prism Library 5.0 for WPF
-
4: Modular Application Development Using Prism Library 5.0 for WPF
-
5: Implementing the MVVM Pattern Using the Prism Library 5.0 for WPF
-
6: Advanced MVVM Scenarios Using the Prism Library 5.0 for WPF
-
7: Composing the User Interface Using the Prism Library 5.0 for WPF
-
9: Communicating Between Loosely Coupled Components Using the Prism Library 5.0 for WPF
-
10: Deploying Applications Using the Prism Library 5.0 for WPF
-
17: Getting Started Using the Prism Library 5.0 for WPF Hands-on Lab
-
18: Publishing and Updating Applications Using the Prism Library 5.0 for WPF Hands-on Lab
上面的是 Prism 5 的檔案, 其實 Prism 4 的檔案也差不多,我在部落格園上找到一份 Prism 4 的檔案翻譯:
還有這份08年的檔案,介紹了 Prism 最初的概念:
Prism (Composite Application Guidance for WPF)
3. Xamarin 中的 MVVM
近幾年 Xamarin 的檔案頗有活力,其中關於也有幾篇關於 MVVM 的內容:
- The Model-View-ViewModel Pattern
- Using the Model-View-ViewModel (MVVM) pattern in a Windows Store business app using C#, XAML, and Prism
- 第 18 章: MVVM
- 從資料繫結到 MVVM
4. 資料繫結
大致上關於 MVVM 的檔案就是上面這些了。另外還需要確保資料繫結和命令的知識,它們是 MVVM 最基礎的概念,所以這方面的檔案也可以看一看。
關於資料繫結,由於是 XAML 平臺的基礎,各個平臺的檔案都寫得很詳細。Wpf 的資料繫結文章寫在一篇裡,預計閱讀時間長達38分鐘:
Xamarin 的資料繫結檔案相對友好,分成多篇文章:
比起 Wpf 和 Xamarin,我覺得 Uwp 的檔案更有趣些,雖然 Uwp 的資料繫結和 Wpf 的有很多不同,但也很值得參考:
5. 其它
在稍微複雜一些的 XAML 中一個元素可能很難搞清楚自己的 DataContext,因為這涉及它的邏輯樹、Parent 的DataContext、DataTemplete 等。總之,使用 Binding 的元素需要搞清楚自己的定位。所以瞭解一下 Data Templating 和 Trees in WPF 對做好 DataBinding 也會有幫助。
另外,只有少量的控制元件有對 ICommand 的處理,所以通過 使用行為 將資料和事件轉換為 Command 的呼叫是實現 MVVM 必不可少的技能。
6. 最後
寫這篇文章的過程簡直成了大型考古,很開心有機會重溫這些當年幫了我很多的檔案。可喜的是十年前的文章對 XAML 開發居然還有用,可悲的是十年前的文章對 XAML 開發居然還有用。
Microsoft Docs 儲存了多年來微軟各種技術檔案的存檔,有興趣的話你也可以在這裡尋找到當年的回憶。
相關文章