Dot-Net

是什麼讓 MVVM 特別適合 WPF?

  • June 7, 2010

Model-View-ViewModel在WPF 和 Silverlight 中非常流行。我一直在將它用於我最近的項目,並且是一個非常忠實的粉絲。

我知道這是對MVP的改進。但是,我想知道 WPF(和 Silverlight)的哪些獨特特性允許 MVVM 工作,並阻止(或至少使困難)這種模式使用其他框架或技術工作。

我知道 MVVM 非常依賴 WPF 中強大的數據綁定技術。這是許多文章和部落格似乎提到的一個特性,它是 WPF 的關鍵,它提供了將 View 與 ViewModel 強分離的方法。但是,數據綁定在其他 UI 框架中以多種形式存在。甚至還有像Truss這樣的項目,它為 .NET 中的 POCO 提供 WPF 樣式的數據綁定。

除了數據綁定之外,還有哪些功能使 WPF 和 Silverlight 特別適合 Model-View-ViewModel?

DataBinding、命令、控制項模板和 XAML。

如果沒有其中之一,MVVM 將更加困難,如果不是不可能的話。以 ASP.net 為例,它有 ASPX 部分(為了範例,它等同於 XAML),它有數據綁定,但它沒有命令或控制模板,所以 MVVM 在那裡是不可能的。在 WinForms 中,我們有數據綁定,僅此而已,所以也不可能。

簡而言之:它是數據綁定。

根據MSDN 的數據綁定概述

如果綁定具有正確的設置並且數據提供了正確的通知,那麼當數據更改其值時,綁定到數據的元素會自動反映更改。數據綁定也可能意味著如果元素中數據的外部表示發生變化,則可以自動更新底層數據以反映變化。例如,如果使用者編輯 TextBox 元素中的值,則基礎數據值會自動更新以反映該更改。

如果您正確設置了 XAML,您只需使用視圖模型與您的使用者界面進行互動。WPF 負責在視圖模型更改時更新 UI,並在 UI 更改時更新視圖模型(例如使用者輸入)。

引用自:https://stackoverflow.com/questions/1521331