成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

.NET MVVM設計模式簡介

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

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

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

使用 MVVM 模式,程序的 UI 和其背后的展現與業務邏輯將被分離至三個類中:

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

2-模型視圖,封裝展示邏輯與狀態

3-模型,封裝程序的業務邏輯以及數據

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

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

 

視圖類

視圖的責任便是定義用戶在屏幕上能看到的一切的結構以及外觀。理想的視圖背后的代碼只包含調用 InitializeComponent 方法的構造函數。視圖通常扮演以下關鍵角色:

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

視圖模型類

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

視圖模型負責協調視圖與任何需要的模型類的交互。很典型的,視圖模型與視圖類有著一堆多的關系。視圖模型可以選擇直接將模型類暴露給視圖,因此視圖的控件能夠直擊進行數據綁定。視圖模型可以轉換或者操縱模型數據所以能夠很容易被視圖使用。

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

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

模型類

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

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

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

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

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

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

【編輯推薦】

  1. 為什么我不再做.NET開發
  2. 詳細解讀ASP.NET的異步
  3. ASP.NET的路由系統:URL與物理文件的分離
  4. ASP.NET MVC3 從零開始一步步構建Web
  5. Node.js vs Opa: Web框架殺手
責任編輯:林師授 來源: OSCHINA
相關推薦

2021-01-21 05:50:28

MVVM模式Wpf

2023-02-09 17:10:05

Observable設計模式

2010-06-09 18:17:18

UML

2010-07-07 09:48:05

UML

2010-01-21 09:08:53

.NET設計模式

2011-07-28 09:50:58

設計模式

2024-04-28 10:22:08

.NETMVVM應用工具包

2013-07-31 13:13:50

Windows PhoMVVM模式

2017-07-17 15:19:10

MVVM模式iOS開發MVP

2012-04-24 09:55:29

.NET

2023-10-20 13:21:55

軟件設計模式架構

2011-07-27 16:55:09

windows安全模式

2009-08-26 14:23:14

C#.Net Fram

2011-05-20 11:31:07

ADO.NET

2015-06-11 14:57:23

ASP.NET 5

2009-06-11 17:13:44

J2EE設計模式Dao設計模式

2009-07-24 13:54:39

MVVM模式

2024-05-31 12:59:03

2021-02-01 10:01:58

設計模式 Java單例模式

2010-03-19 10:38:30

無線AP模式
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲精品大片 | 国产精品一区视频 | 国产一区二区影院 | 国产精品美女久久久av超清 | 免费成人国产 | 成人免费共享视频 | 日韩精品免费 | 国产高潮好爽受不了了夜夜做 | 国产三级在线观看播放 | www.日本国产 | 欧美二区在线 | 日本黄色免费大片 | 日本黄色免费视频 | 亚洲一区中文字幕 | 日韩在线精品强乱中文字幕 | 亚洲va国产日韩欧美精品色婷婷 | 日韩不卡视频在线 | 一区二区三区四区免费视频 | 欧美成人激情视频 | 国产在线视频99 | 中文字幕一区二区三区不卡 | 亚洲精品永久免费 | 国产日韩精品视频 | 国产美女视频黄 | 久久精品一级 | 国产免费观看视频 | 精品国产三级 | 91免费福利视频 | 在线高清免费观看视频 | 日日摸天天添天天添破 | 精品欧美一区二区精品久久久 | a级毛片基地 | 九九热精品视频在线观看 | 中文在线一区二区 | 国产一区二区三区在线免费 | av中文网| 中文字幕成人av | www国产成人免费观看视频,深夜成人网 | 在线观看成人小视频 | 天天插天天射天天干 | 亚洲视频中文字幕 |