1. 程式人生 > >WPF-MVVM模式學習筆記1——MVVM概念預覽

WPF-MVVM模式學習筆記1——MVVM概念預覽

    畢業工作後的第一版軟體也漸漸接近尾聲,邊學邊做也算是能暫且滿足專案需求,但是還是不滿意,因為有之前的WINFORM換到WPF後,感覺根本沒有掌握WPF的核心,什麼繫結拉之類的用的不好。接下來的新專案的軟體準備採用MVVM模式設計,抓緊學一學,廢話不說,直接進入正題,文章是筆記,所以大多數是來源於網路,我會註明引用的網址,別人辛苦寫文章也不容易。

MVVM簡介

   MVVM模式是Model-View-ViewModel模式的簡稱。由檢視(View)、檢視模型(ViewModel)、模型(Model)三部分組成,結構如下圖1,通過這三部分實現UI邏輯、呈現邏輯和狀態控制、資料與業務邏輯的分離。(,假如有一個UI設計師和程式設計師,那麼UI設計師負責View,程式猿負責ViewModel和Model,我暫時是這樣理解的,哈哈)


模型、檢視、檢視模型的分工

   1. 檢視(View)

    檢視負責介面和顯示。它通過DataContext(資料上下文)和ViewMoel進行資料繫結,不直接與Model互動。可以繫結Behavior/Command來呼叫ViewModel的方法,Command是View到ViewModel的單向通行,通過實現WPF提供的ICommand介面來實現繫結,讓View觸發事件,ViewModel來處理事件,以解決事件繫結功能。

    2.檢視模型(ViewModel)

    檢視模型主要包括介面邏輯和模型資料封裝,Behavior/Command事件響應處理,繫結屬性定義和集合等。它是View和Model的橋樑,是對Model的抽象,比如:Model中資料格式是“年月日”,可以在ViewModel中轉換Model的資料為“日月年”供View顯示。

     實現檢視模型需要實現WPF提供的介面INotifyPropertyChanged,INotifyPropertyChanged介面用於實現屬性和集合的變更通知(Change Notifications)。使得在使用者在檢視上所做的操作都可以實時通知到檢視模型,從而讓檢視模型物件有的模型進行正確的業務操作。

     View的程式碼隱藏(Code-Behind)部分可能包含介面邏輯或者應用邏輯的程式碼,這些程式碼會很難進行單元測試,應根據具體情況儘量避免。


    3.模型(Model)

    Model與MVC一樣,Model用於封裝與應用程式的業務邏輯相關的資料以及對資料的處理方法。他具有對資料直接訪問的權利,例如對資料庫的訪問,Model不依賴於View和ViewModel,也就是說,模型不關心會被如何顯示或是如何被操作,模型也不能包含任何使用者使用的與介面相關的邏輯。Model在實際開發中根據實際情況進行細分。

      概念簡單記一下,網上很多,不多說,下一節針對程式碼學習。

      引用網址:http://www.cpiso.cn/jsyj/ghxx/2012/5/18/373.shtml