首頁 > 軟體

[Windows] 在 Microsoft Docs 網站中挖掘 MVVM 的各種學習資源

2020-12-09 09:30:07

最近寫了一些 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 儲存了多年來微軟各種技術檔案的存檔,有興趣的話你也可以在這裡尋找到當年的回憶。


IT145.com E-mail:sddin#qq.com