[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 本身的內容。部分中文翻譯的文章我直接給出中文地址,其它則是英文原文。

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 的使用和實現原理,還有各種模式的程式碼示例,通過閱讀這些文檔,我敢保證,你的英語會變好一些。

上面的是 Prism 5 的文檔, 其實 Prism 4 的文檔也差不多,我在部落格園上找到一份 Prism 4 的文檔翻譯:

Prism – 隨筆分類 – 西夏 – 部落格園

還有這份08年的文檔,介紹了 Prism 最初的概念:

Prism (Composite Application Guidance for WPF)

3. Xamarin 中的 MVVM

近幾年 Xamarin 的文檔頗有活力,其中關於也有幾篇關於 MVVM 的內容:

4. 數據綁定

大致上關於 MVVM 的文檔就是上面這些了。另外還需要確保數據綁定和命令的知識,它們是 MVVM 最基礎的概念,所以這方面的文檔也可以看一看。

關於數據綁定,由於是 XAML 平台的基礎,各個平台的文檔都寫得很詳細。Wpf 的數據綁定文章寫在一篇里,預計閱讀時間長達38分鐘:

Data binding overview in WPF

Xamarin 的數據綁定文檔相對友好,分成多篇文章:

Xamarin.Forms 數據綁定

比起 Wpf 和 Xamarin,我覺得 Uwp 的文檔更有趣些,雖然 Uwp 的數據綁定和 Wpf 的有很多不同,但也很值得參考:

5. 其它

在稍微複雜一些的 XAML 中一個元素可能很難搞清楚自己的 DataContext,因為這涉及它的邏輯樹、Parent 的DataContext、DataTemplete 等。總之,使用 Binding 的元素需要搞清楚自己的定位。所以了解一下 Data TemplatingTrees in WPF 對做好 DataBinding 也會有幫助。

另外,只有少量的控制項有對 ICommand 的處理,所以通過 使用行為 將數據和事件轉換為 Command 的調用是實現 MVVM 必不可少的技能。

6. 最後

寫這篇文章的過程簡直成了大型考古,很開心有機會重溫這些當年幫了我很多的文檔。可喜的是十年前的文章對 XAML 開發居然還有用,可悲的是十年前的文章對 XAML 開發居然還有用。

Microsoft Docs 保存了多年來微軟各種技術文檔的存檔,有興趣的話你也可以在這裡尋找到當年的回憶。