Mvvm簡介


Mvvm簡介

當我們在開發WPF,SilverLight,WP程序時,會使用Mvvm這一架構模式。它是一個很籠統的架構模式概念。在.Net下,我所知道的Mvvm框架有

其中MvvmLight是三者中最簡單,但也是最完美詮釋Mvvm架構模式的框架。Caliburn.Micro和Prism除了提供基本的Mvvm架構模式之外,提供了其他更加豐富的功能,有興趣的同學可以前往研究。
本文主要從MvvmLight入手。

Mvvm是Model-View-ViewModel的縮寫。這個模式中的核心就是View,ViewModel,Model三者之間的組織和聯系。

  • View

即視圖,WPF中以Window,UserControl,Page作為視圖.

  • ViewModel

視圖邏輯,業務邏輯,例如用戶在界面上點擊一個按鈕,那么這個按鈕具體做什么事情,就是在這里實現,注意,並不是在視圖的
后台代碼中(.xaml.cs)中來實現.

  • Model

數據模型,實體模型,例如一個表示學生的類

他們之間的關系用一個圖可以表示出來
Mvvm簡單關系圖;

這是普通的一個Mvvm運用,總結一下就是:
1.View需要顯示的數據來自於ViewModel對Model的組織,WPF中的數據綁定機制會將數據更新到View上
2.View通過Command調用ViewModel中的方法對Model進行操作,完成業務

這樣的架構有什么好處?

Mvvm根本的思想就是界面和業務功能進行分離,View的職責就是負責如何顯示數據及發送命令,ViewModel的功能就是如何提供數據和執行命令。各司其職,互不影響。假如客戶覺得這個
界面不好看,那么我們僅僅是對View作修改,不會影響到ViewModel中的功能代碼,減少了犯錯的機會。隨着功能地增加,系統越來越復雜,相應地程序中會增加View和ViewModel文件,將
復雜的界面分離成局部的View,局部的View對應局部的ViewModel,功能點散落在各個ViewModel中,每個ViewModel只專注自己職能之內的事情。ViewModel包含了View要顯示的數據,並且
知道View的交互代碼,所以ViewModel就像一個無形的View。
一直以來針對View的自動化測試總是顯得很困難,那么測試ViewModel就會非常方便。總結一下,使用Mvvm架構具有以下優勢

  • 易維護
  • 靈活擴展
  • 易測試

兩個理念

在Mvvm中有兩種理念。

  • View優先(MvvmLight)
  • ViewModel優先(Caliburn.Micro)

使用兩種理念寫出來的代碼是不一樣的,所以團隊開發中使用其一即可。區分二者最直接的表現就在於如何顯示一個View

  • 在MvvmLight中

    var view=new AppView();
    

    view.Show();

  • 在Caliburn.Micro中

    var viewModel=new AppViewModel();
    

    WindowManager.Show(viewModel);

在MvvmLight中,先創建一個View對象,然后在與之對應的ViewModel綁定,而在CM中,有個名為WindowManager的類會幫我們
去找到與ViewModel對應的View。后面我也會花時間整理一個CM的總結。

下一篇會針對MvvmLight進一步分析,主要是一些示例代碼,它是一個很簡單的框架,快速學會使用它
用好它,能夠擴展的地方會詳細一點.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM