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

探秘Model-View-ViewModel設計模式

開發 后端
這里將簡單介紹一下Model-View-ViewModel設計模式,希望通過本文能讓大家對Model-View-ViewModel有所了解。
Model-View-ViewModel很多人肯定感覺不太熟悉,這里我們將介紹Model-View-ViewModel與MVC、MVP等模式的不同點,同時還要以DEMO的形式來進行開發講解。

Model-View-ViewModel和MVC、MVP設計模式的不同點

Model-View-ViewModel設計模式是MVP設計模式與WPF技術相結合的產物,對于一些很常見的如Model-View-Controller(MVC)設計模式和Model-View-Presenter(MVP)設計模式來說,當在WPF下使用時它們都有一個很大的缺點:就是它們根本沒有考慮到WPF強大的數據綁定技術。在這些模式中,Controller或者Presenter對視圖的行為負責,就像填充TextBox的文本內容,加載ListBox,填充表格的內容等等。而這些在WPF中都能輕松解決,因為正好WPF最大的優點之一就是它豐富的數據綁定能力。如果在WPF中使用MVC或者MVP設計模式,就可能完全無法利用WPF中數據綁定的方便性,而Model-View-ViewModel則不一樣。

Model-View-ViewModel的定義

Model-View-ViewModel設計模式最早是由John Gossman引入的,感興趣的朋友可以看看“http://blogs.msdn.com/johngossman/archive/2005/10/08/478683.aspx”這篇文章。該模型提供了一個純凈的Model,創建了一個抽象的視圖來容納狀態,并且數據從一個由可視化設計器創建的視圖綁定到一個抽象的視圖上。該可視化設計器主要是Microsoft Expression Blend工具,而這個抽象的視圖則是ViewModel。關鍵的地方是通過數據綁定在View與ViewModel模型之間進行雙向的聯系。當正確地使用該設計模式后,每一個View除了純凈的XAML和非常少量的后置代碼外不會再包含任何東西,徹底地做到了界面展示和業務邏輯的分離,讓程序員更加專注于代碼的編寫。

ViewModel

ViewModel的作用是讓Mdoel更加適合于View。例如你有一個返回了一個泛型集合IList的方法,但你實際上可能還會把它轉換到一個對WPF更加友好的類中以更加方便地進行數據綁定。通過ViewModel,可以把IList類型的Model集合轉換成如CollectionView之類的東西以方便WPF中的UI界面元素進行數據綁定,完成這項任務最關鍵的地方在于在ViewModel中暴露出一個公共的屬性。和Controlller類似,ViewModel也能用來容納View的狀態以及執行View需要的任何命令。
因為WPF內置了Command模式,對于像Button控件之類的UI元素來說都有一個Command的屬性,它是WPF所定義的ICommand類型。可以把這些命令放到ViewModel中并以公有屬性的形式暴露出來,這樣就可以讓View對其進行綁定。這極其強大,因為它可以把ModelView中的可執行代碼綁定到窗體的Button上。

Demo

以下是使用了Model-View-ViewModel 設計模式的一個簡單的WPF應用程序例子,感興趣的話可以下載代碼看看。后臺使用的是大家常見的Northwnd數據庫:

簡單的WPF應用程序例子

相關的類關系圖如下:

相關的類關系圖

原文標題:Model-View-ViewModel 設計模式介紹

鏈接:http://www.cnblogs.com/gyche/archive/2009/09/21/1557307.html

【編輯推薦】

  1. 詳解ASP.NET MVC分頁的實現方法
  2. ASP.NET MVC與WebForm區別談
  3. ASP.NET MVC應用程序執行過程分析
  4. ASP.NET MVC分頁控件的實現
  5. 有關ASP.NET MVC框架的一些基礎知識
責任編輯:彭凡 來源: 博客園
相關推薦

2014-07-17 10:06:02

Model-View-iOS App

2021-04-27 08:31:10

前端應用場景

2013-07-31 13:13:50

Windows PhoMVVM模式

2017-07-20 11:18:22

Vue.jsMVVMMVC

2021-02-01 10:01:58

設計模式 Java單例模式

2024-11-29 08:26:37

2014-08-21 09:31:06

路由

2023-11-02 21:11:11

JavaScript設計模式

2010-04-09 09:28:37

View Model

2017-03-02 11:10:39

AndroidMVVM應用程序

2020-08-21 07:23:50

工廠模式設計

2020-11-04 08:54:54

狀態模式

2023-04-10 09:20:13

設計模式訪客模式

2020-11-03 13:05:18

命令模式

2013-11-26 16:09:34

Android設計模式

2020-10-23 09:40:26

設計模式

2022-01-12 13:33:25

工廠模式設計

2023-05-04 08:47:31

命令模式抽象接口

2021-04-19 21:25:48

設計模式到元

2015-09-08 13:39:10

JavaScript設計模式
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产区一区二区三区 | 久久网一区二区 | 国产精品久久久久久影院8一贰佰 | av一区二区三区在线观看 | 久久精品国产一区 | 99久久精品免费视频 | 一区二区三区电影网 | 国产精品jizz在线观看老狼 | 中文字幕一区二区三区不卡 | 中文字幕久久精品 | 国产一区亚洲二区三区 | 免费观看黄网站 | 激情一区二区三区 | 精品国产青草久久久久福利 | 国产精品久久久久久久7777 | 日韩av在线播 | 一区二区高清在线观看 | 国产一区二区在线免费观看 | 国产欧美精品一区二区色综合朱莉 | 亚洲成人观看 | 日韩精品一区二区三区在线播放 | 国产精品久久久久久久久免费樱桃 | 欧美精品一区二区三区在线播放 | 国产清纯白嫩初高生在线播放视频 | 成人久久久久 | 免费电影av| 免费观看一级特黄欧美大片 | 欧美一区二区三区国产 | 日韩不卡一区二区三区 | 亚洲欧美日韩电影 | 欧美自拍一区 | 国产精品永久免费 | 在线久草 | 免费h视频 | 日韩精品免费视频 | 精品一区二区久久久久久久网精 | 国产91精品久久久久久久网曝门 | 一区二区三区四区在线视频 | 韩国av网站在线观看 | 欧美2区 | 在线日韩不卡 |