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

在WP開發中如何使用MVVM Light框架

移動開發
MVVM Light是Silverlight開發中比較流行的MVVM框架,本文將根據一個實際項目,為您介紹MVVM Light的使用方法。

MVVM Light是Silverlight開發中比較流行的MVVM框架。本文作者將根據一個實際項目(Windows Phone程序),為大家介紹MVVM Light的使用說明。

MVVM Light相關資源

項目地址:http://mvvmlight.codeplex.com/releases

MVVM Light介紹

首先貼一張圖,這是MVVM的一個內部通信機制。

MVVM Light介紹

簡單的概括來說MVVM Light幫我實現了View和ViewModel的相互通信,ViewModel和Model的通信。

為什么使用MVVM Light

◆比較方便做單元測試;

◆不需要改變Model來支持不同的View變化;

◆在View發生變化時,只需要對ViewModel做極小的改變就可以適應新的程序,很方便程序的移植;

◆將設計UE和開發分離,開發人員只負責底層通信的實現,做界面的人員只需盡可能的去美化UI,我們團隊中將ViewModel也是交給界面設計人員來做,我覺得ViewModel究竟由UE還是由開發來做還是值得商榷的,因該根據具體團隊分工來說。

MVVM Light使用

如果你打開我上面說的鏈接地址的話,你會安裝MVVM Light的.msi文件,安裝成功后,打開VS2010,選擇新建項目,會看到如下界面:

MVVM lihgt使用

新建好一個MVVM項目,你會在右邊看到一個如下的項目樹,他們中分別有對應我們需要使用的View,ViewModel,Model,我個人習慣一個View對應一個ViewModel,當然如果Model有復用的情況,就可以多個ViewModel對應一個Model,所以Model的數量是根據個人情況可以改變的,有的人還習慣將Model放入ViewModel中,但是既然MVVM Light已經給我們將文件樹的框架列出來了,我想也有他的道理。

再說說那個ViewModelLocator文件,他是整個項目的核心文件,打個比方來說就好比人脊梁,支撐著我們的四肢。在他當中我們對每一個ViewModel進做了實例化,而在他的構造函數中使用了一個Singleton設計模式,從而保證,在整個項目運行過程中,只存在一個ViewModelLocator實例,不過我發現這個Singleton并沒有對多線程做支持,也就是說如果你做的是多線程程序,這里需要改成支持多線程的Singleton,具體我在之前的博文中有介紹Singleton。

MVVM lihgt使用

介紹完了各個文件的作用,就來說說具體用法,在這里我不想一步一步寫出來每一行代碼的用法,因為感覺浪費時間,而且有些重復很多網友的勞動,我只將一些比較關鍵的代碼貼出來,希望對你起到觸類旁通的作用。

首先打開App.xaml文件,你會看到如下代碼,如果沒有請自己添上,因為App文件是一個全局變量,并且在程序最開始啟動就已經運行了,這里的代碼是告訴編譯器在程序一開始就去訪問ViewModelLocator文件,并且構造一個全局可以訪問的ViewModelLocator實例,x:key是用于xaml文件訪問的,d:IsDataSource是用于ExpressionBlend構建界面時來實時顯示數據用的。

MVVM lihgt使用

既然有了全局的ViewModelLocator,那么就可以在View中去構建Command與ViewModel中的Command進行綁定,從而實現View和ViewModel的通信,下面是在View當中兩種調用Command的方式:

MVVM lihgt使用 

MVVM lihgt使用 

MVVM lihgt使用

上面兩個調用方式效果是完全一樣的,我懷疑上面那種方式是下面的一種封裝,因為cmd是可以用在Button類控件當中的,而下面的則不行,當然除了簡簡單單的綁定Command外,也可以傳遞CommandParameter參數,而且還有支持手勢的Command,因為本文并沒有想去討論的這么深入,所以就不多深入介紹,如果你有興趣,可以通過右側微博或是在博客里留言等方式找到我。

下面是在ViewModel中去實現上面所要用到的Command。

MVVM lihgt使用 

MVVM lihgt使用

除了Command外,相信MVVMLight給我帶來的就是Messager這個東西了,他一般被使用在code-behind當中,使用方式如下:

MVVM lihgt使用

在ViewModel中響應該Messenger的代碼在之前介紹ViewModel的Command中已經有出現,可以看看那里注釋掉的代碼,在這里需要注意的是在OnNavigationTo方法注冊了Messenger之后在OnNavigationFrom中一定要進行卸載,否則會造成內存泄漏。

原文鏈接:http://tmango.com/?p=878

責任編輯:王曉東 來源: tmango.com
相關推薦

2012-05-28 10:34:50

MVVM 數據綁定

2013-02-25 11:06:34

2017-02-24 10:02:04

AndroidMVVM應用框架

2012-05-08 11:03:28

Coding4Fun

2021-03-11 16:34:57

css前端CSS 特效

2012-05-14 15:44:20

Coding4Fun Coding4Fun

2009-07-06 15:19:13

webwork ser

2015-05-05 10:32:15

iOS-MVVM框架

2010-04-20 09:14:33

Struts

2016-03-01 13:48:36

MVVMios快速開發

2012-06-05 09:54:50

Windows Pho

2012-05-08 09:15:10

WP8Windows 8

2021-08-22 17:22:31

VS Code容器開發人員

2021-09-17 09:30:57

鴻蒙HarmonyOS應用

2024-01-30 08:56:55

性能監控性能管理工具內存存儲

2025-01-13 08:00:00

ofa.js前端框架

2024-04-23 10:23:34

WPFMVVMPrism

2012-05-25 12:57:31

Windows Pho

2018-01-08 15:30:18

Linux命令date

2024-04-28 10:22:08

.NETMVVM應用工具包
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产精品成人久久久久 | 日韩中文在线视频 | 久久精品色欧美aⅴ一区二区 | 精品国产色 | 亚洲免费在线观看 | 999免费视频 | 成人免费影院 | 久久精品视频播放 | 国产精品1区 | 亚洲免费人成在线视频观看 | 精品少妇一区二区三区在线播放 | 免费观看www7722午夜电影 | 免费久久视频 | 精品一区二区三区在线观看国产 | 国产精品乱码一区二区三区 | 日韩成人高清在线 | 99热国产在线播放 | av黄色在线 | 香蕉视频91 | 在线日韩福利 | 伊人超碰| 免费一区二区三区在线视频 | 精品亚洲视频在线 | 欧美日韩精品免费 | 天天色综| 亚洲国产二区 | 欧美一区二区三区在线观看 | 日韩不卡在线观看 | 日韩一区和二区 | 国产亚洲精品精品国产亚洲综合 | 国产一区二区高清在线 | 亚洲欧美中文日韩在线v日本 | 亚洲午夜视频 | 久久99精品久久久久久秒播九色 | 久久综合狠狠综合久久综合88 | 国产一区在线免费观看视频 | 99精品一级欧美片免费播放 | 在线精品一区二区 | 欧美不卡视频 | 精品日韩在线 | 亚洲精品在线视频 |