日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
.NETMVVM設(shè)計模式簡介

英文原文:Intro to the Model-View-ViewModel Design Pattern

目前創(chuàng)新互聯(lián)已為上1000+的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬空間、成都網(wǎng)站托管、企業(yè)網(wǎng)站設(shè)計、淳安網(wǎng)站維護(hù)等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

MVVM 模式能夠幫你把你程序的業(yè)務(wù)與展現(xiàn)邏輯從用戶界面干凈地分離開。保持程序邏輯與界面分離能夠幫助解決很多開發(fā)以及設(shè)計問題,能夠使你的程序能更容易的測試,維護(hù)與升級。它也能很大程度的增加代碼重用性,并讓開發(fā)者與界面設(shè)計者更容易地相互合作。

使用 MVVM 模式,程序的 UI 和其背后的展現(xiàn)與業(yè)務(wù)邏輯將被分離至三個類中:

1-視圖,封裝 UI 與 UI 邏輯

2-模型視圖,封裝展示邏輯與狀態(tài)

3-模型,封裝程序的業(yè)務(wù)邏輯以及數(shù)據(jù)

MVVM 模式是展示-模型模式的變種,它優(yōu)化了一些 WPF 的核心特性,例如數(shù)據(jù)綁定,數(shù)據(jù)模版,命令以及行為。在 MVVM 模式中,視圖通過數(shù)據(jù)綁定以及命令行與視圖模型交互,并改變事件通知。視圖模型查詢觀察并協(xié)調(diào)模型更新,轉(zhuǎn)換,校驗以及聚合數(shù)據(jù),從而在視圖顯示。

下圖展示了 MVVM 類以及它們之間的交互:

視圖類

視圖的責(zé)任便是定義用戶在屏幕上能看到的一切的結(jié)構(gòu)以及外觀。理想的視圖背后的代碼只包含調(diào)用 InitializeComponent 方法的構(gòu)造函數(shù)。視圖通常扮演以下關(guān)鍵角色:

  • 視圖是可視化元素,例如窗口,頁面,用戶控件或者數(shù)據(jù)模版
  • 視圖定義了包含在視圖里的控件以及可視化層以及樣式
  • 視圖通過 DataContext 屬性應(yīng)用視圖模型
  • 綁定了控件以及數(shù)據(jù)的屬性以及命令被視圖模型暴露出來
  • 視圖可以定制化視圖與視圖模型間數(shù)據(jù)綁定行為
  • 視圖定義以及處理 UI 可視化行為例如動畫
  • 視圖背后的代碼實現(xiàn)了用 XAML 很難表達(dá)的可視化行為

視圖模型類

視圖模型在 MVVM 模式中為視圖封裝了展示邏輯,它并不是直接引用視圖或者任何其他關(guān)于視圖特定的實現(xiàn)或者類型。視圖模型實現(xiàn)了屬性以及命令使得視圖進(jìn)行數(shù)據(jù)綁定,并通過改變事件通知來提醒視圖狀態(tài)已經(jīng)改變了。視圖模型提供的屬性和命令定義了提供給 UI 的功能。但是視圖定義了如何渲染的功能。

視圖模型負(fù)責(zé)協(xié)調(diào)視圖與任何需要的模型類的交互。很典型的,視圖模型與視圖類有著一堆多的關(guān)系。視圖模型可以選擇直接將模型類暴露給視圖,因此視圖的控件能夠直擊進(jìn)行數(shù)據(jù)綁定。視圖模型可以轉(zhuǎn)換或者操縱模型數(shù)據(jù)所以能夠很容易被視圖使用。

很典型的,視圖模型會定義能被展現(xiàn)在 UI 上并被用戶調(diào)用的的命令或者行為。一個通用的例子就是當(dāng)視圖模型需要提交命令時會允許用戶提交數(shù)據(jù)到網(wǎng)絡(luò)服務(wù)或者數(shù)據(jù)庫。視圖可以選擇用一個按鈕來展示所以用戶能夠點擊該按鈕提交數(shù)據(jù)。典型地,當(dāng)命令編程不可用的,它相關(guān)的 UI 展示也變得不可用。視圖模型通常扮演下面這些關(guān)鍵角色:

  • 模型視圖是非可視化類,它封裝了展現(xiàn)邏輯
  • 視圖模型是可以獨立于視圖與模型調(diào)試的
  • 視圖模型很典型地是不直接引用視圖的
  • 視圖模型實現(xiàn)了視圖用來數(shù)據(jù)綁定的屬性與命令
  • 視圖模型通過改變提醒事件通知視圖狀態(tài)的改變:INotifyPropertyChanged 與 INotifyCollectionChanged
  • 視圖模型協(xié)調(diào)視圖與模型的交互
  • 視圖模型可以定義視圖展現(xiàn)給用戶的邏輯狀態(tài)

模型類

model 在 MVVM 模式中封裝了業(yè)務(wù)邏輯以及數(shù)據(jù),業(yè)務(wù)邏輯定義了像所有檢索和程序數(shù)據(jù)管理相關(guān)的程序邏輯一樣,用來確保所有的保證數(shù)據(jù)持久與有效的業(yè)務(wù)規(guī)則被應(yīng)用。***化代碼重用,模型不能包含任何特定的情況,特定的用戶任務(wù)以及程序邏輯。

典型的有模型為程序展現(xiàn)了客戶端域模型,模型也可能包含支持?jǐn)?shù)據(jù)訪問與緩存的代碼,即使有一個分離的數(shù)據(jù)庫或者服務(wù)被使用。模型與數(shù)據(jù)房分層通常被作為數(shù)據(jù)訪問或嗚嗚結(jié)構(gòu)而生成,例如 ADO.NET 尸體礦井唉,WCF 數(shù)據(jù)服務(wù),或者 WCF RIA 服務(wù)。

模型層實現(xiàn)了輕松綁定視圖的功能。這通常意味著它支持通過 INotifyPropertyChanged 與 INotifyCollectionChanged 進(jìn)行屬性與集合更改通告。展現(xiàn)對象集合的模型類典型地源自 ObservableCollection類,該類提供了對 INotifyCollectionChanged 接口的實現(xiàn)。

模型也能通過 IDataErrorInfo 接口支持?jǐn)?shù)據(jù)驗證以及錯誤報告。這些接口允許當(dāng)數(shù)值改變時的 WPF 數(shù)據(jù)綁定被通知,從而更新界面。模型通常扮演如下的關(guān)鍵角色:

  • 模型類是不可視類,它封裝了程序數(shù)據(jù)
  • 模型類不直接應(yīng)用視圖或視圖模型類
  • 模型類不依賴于它們是如何實現(xiàn)的
  • 模型類是典型地通過 INotifyPropertyChanged/INotifyCollectionChanged 接口提供屬性與集合更改事件的.
  • 模型類很典型地繼承自 ObservableCollection
  • 模型類是很典型地通過 IDataErrorInfo/INotifyDataErrorInfo.提供數(shù)據(jù)驗證與錯誤報告
  • 模型類典型地與封裝了數(shù)據(jù)訪問的服務(wù)一起使用。

原文來自:http://www.oschina.net/question/89964_46543


本文名稱:.NETMVVM設(shè)計模式簡介
轉(zhuǎn)載來源:http://www.dlmjj.cn/article/ccdjphi.html