WPF MVVM模式

什麼是MVVM模式,Model(模型)-View(視圖)-ViewModel(視圖模型)

先來說MVC模式,模型-視圖-控制器,相信大多數人都用過原理無非是:sql

頁面產生某個請求,先找到頁面對應的控制器,而後觸發控制器的方法,控制器去模型調取數據拿回來,再返回給相應的視圖,最後呈現頁面。數據庫

MVVM模式原理相似MVC,只不過中間的不叫控制器了叫視圖模型,功能也比Controller複雜了一些,緣由就多繼承了一個監聽接口。mvvm

流程:ui

  1. 用戶點擊View某個按鈕

學過Winform都知道,點擊Button有Click事件,這個你暫且把它看成事件(指令)好了,你當點擊保存按鈕會觸發SaleCommand指令這是你本身在後臺定義的,Command="{Binding SaleCommand}"的意思就是綁定的指令是SaleCommand。this

  1. View點擊以後保存觸發SaleCommand,這就傳到了ViewModel

相似於Winform,在點擊事件裏寫你要的方法。這裏一樣指定了方法是OnSaleCommand。而後執行方法,我這裏寫的sql語句,實現數據庫更新,業務大了不可能每一個頁面都寫SQL,就須要用到接口、IOC等等,實現解耦。
3d

  1. 保存到結果以後,會將結果返回,好比一個list ,可是這個Model繼承了一個 INotifyPropertyChanged接口,這個接口是幹嗎用的呢,用來監測屬性的變化,也是實現雙向綁定必須繼承的接口。當我Model裏某個字段值發生變化,Set會觸發,將結果展現在頁面上,一樣頁面發生變化,也會將值傳給後臺。

  1. 相似於Winform的GridView綁定數據源是this.gridView.ItemSourse=數據源。WPF中也是同樣。

  1. EquipBoxs就是數據源,但後臺怎麼賦值的呢,在ViewModel中,定義了一個動態集合,跟list差很少。可是這個動態集合是雙向綁定的,頁面變化後臺也就變了,緣由也是由於實現了INotifyPropertyChanged接口。
    雙向綁定

  2. 當頁面發生改變時自動獲取屬性值,而後經過服務層修改到數據庫。查詢的時候也能夠將查到的list集合,轉化成ObservableCollection動態集合,而後就自動更新了。orm

總的來講,利用數據驅動頁面的原理就是對數據進行了監聽,只要有一方改變,另外一方也隨之變化,View和ViewModel都是經過數據和命令的綁定聯通的,這樣View和ViewModel關聯性就不大,這就是MVVM模式的好處。blog

相關文章
相關標籤/搜索