什麼是MVVM模式,Model(模型)-View(視圖)-ViewModel(視圖模型)
先來說MVC模式,模型-視圖-控制器,相信大多數人都用過原理無非是:sql
頁面產生某個請求,先找到頁面對應的控制器,而後觸發控制器的方法,控制器去模型調取數據拿回來,再返回給相應的視圖,最後呈現頁面。數據庫
MVVM模式原理相似MVC,只不過中間的不叫控制器了叫視圖模型,功能也比Controller複雜了一些,緣由就多繼承了一個監聽接口。mvvm
流程:ui
學過Winform都知道,點擊Button有Click事件,這個你暫且把它看成事件(指令)好了,你當點擊保存按鈕會觸發SaleCommand指令這是你本身在後臺定義的,Command="{Binding SaleCommand}"的意思就是綁定的指令是SaleCommand。this
相似於Winform,在點擊事件裏寫你要的方法。這裏一樣指定了方法是OnSaleCommand。而後執行方法,我這裏寫的sql語句,實現數據庫更新,業務大了不可能每一個頁面都寫SQL,就須要用到接口、IOC等等,實現解耦。
3d
EquipBoxs就是數據源,但後臺怎麼賦值的呢,在ViewModel中,定義了一個動態集合,跟list差很少。可是這個動態集合是雙向綁定的,頁面變化後臺也就變了,緣由也是由於實現了INotifyPropertyChanged接口。
雙向綁定
當頁面發生改變時自動獲取屬性值,而後經過服務層修改到數據庫。查詢的時候也能夠將查到的list集合,轉化成ObservableCollection動態集合,而後就自動更新了。orm
總的來講,利用數據驅動頁面的原理就是對數據進行了監聽,只要有一方改變,另外一方也隨之變化,View和ViewModel都是經過數據和命令的綁定聯通的,這樣View和ViewModel關聯性就不大,這就是MVVM模式的好處。blog