您的位置: 首页 > 技术文档 > 网络编程 > Silverlight中使用MVVM模式
用智能跟踪(IntelliTrace)窥入云端 回到列表 20年来我得到的20条编程经验
 Silverlight中使用MVVM模式

作者:bluehearts 时间: 2010-08-18 文档类型:原创 来自:蓝色理想

最近的项目中使用了MVVM模式,所以这段时间查阅了大量这方面模式的文章,

理论上的东西大家都说的比较好,这里我也不大谈MVVM模式的优势了,只是

美中不足的是大部分给出的示例中,对于一个没有用过MVVM模式的人而言,

这些例子总是给人一种摸不着头绪的感觉,所以我想将我学习MVVM的过程一步步

写下来,希望对于和我一样,刚刚接触MVVM这个模式的人有一点点帮助。

如果你不知道MVVM模式,我建议你先了解一下MVVM模式,至少要知道实现

该模式的意图是什么。

那么我主要通过我认为是已经算是比较简单的例子进行讲解这个模式,

当然后面我们会在这个例子的基础上一步一步的进行扩展。

先来看一看我们的项目架构:

很典型的MVVM的分层方式

我们先来构建Model,首先在Person.cs中简单声明了一个类型

        public class Person  
       {  
         public int age  { get; set; }  
         public string name { get; set;}  
       }

类型定义好后,我们在Persons.cs中得到一个Person的集合

        public class Persons  
       {  
        public List<Person> person;  
        public 

        List<Person> getPerson()  
        {  
            person = new List<Person>()   
            {   
       

         new Person{name = "Tom",  age = 21 },  
                  new Person{name = "Jack", age = 22 },  

                  new Person{name = "Rose", age = 23 },  
            };  
            return person;  
        } 
    }

那么这里我们就简单的完成了Model的工作,下面开始完成ViewModel部分的工作

       public class PageViewModel    
       {  
       public List<Person> Human { get; set; }  
       public 

       PageViewModel()  
       {  
           Human = new Persons().getPerson();  
       }        
       }

ViewModel也设计的很简单,只是简单的获取了之前定义的集合。

下面就是PageView部分了,这里用DataGrid进行显示数据

   <data:DataGrid AutoGenerateColumns="False" Height="200" 
ItemsSource="{Binding Path=Human}" 

HorizontalAlignment="Left" Margin="36,51,0,0" Name="dataGrid1" 
VerticalAlignment="Top" Width="200">  
    <data:DataGrid.Columns>  
    <data:DataGridTemplateColumn>  
                    

<data:DataGridTemplateColumn.CellTemplate>  
<DataTemplate>     
                   
<StackPanel>  
<TextBlock Height="23" HorizontalAlignment="Left" 

Name="textBlock1" Text="{Binding name}" VerticalAlignment="Top" />  
<TextBlock Height="23" HorizontalAlignment="Left" Name="textBlock2"

Text="{Binding age}" VerticalAlignment="Top" /> 

</StackPanel>  
</DataTemplate>  
                    

</data:DataGridTemplateColumn.CellTemplate>  
</data:DataGridTemplateColumn>  
            

</data:DataGrid.Columns>  
</data:DataGrid>

这里我们将DataGrid的源设为Human,这样我们就完成了MVVM模式各个层次的初步构建,

关键的问题是怎样将这几个部分有效的联系起来.

我们将PageView,PageViewModel引入到MainPage中

<UserControl x:Class="UseMVVMInApp.MainPage" 
 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"  
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"  
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"  
xmlns:mc="http://schemas.openxmlformats.org/ markup-compatibility/2006"  
 mc:Ignorable="d"  
xmlns:viw="clr-namespace:UseMVVMInApp.View"  
xmlns:vmmodel="clr-namespace:UseMVVMInApp.ViewModel"  
d:DesignHeight="300" d:DesignWidth="400">  
<UserControl.Resources>  
      
<vmmodel:PageViewModel x:Key="vm"></vmmodel:PageViewModel>  
</UserControl.Resources>  
        

<Grid x:Name="LayoutRoot" Background="White" DataContext=
"{StaticResource vm}" > 
     
<viw:PageView></viw:PageView>  
</Grid>  
</UserControl>
这里的工作就是将PageViewModel声明为一个资源,然后通过页面引用它,

这样就实现了我们所谓的MVVM模式。

当然了,这个例子是很简单的,似乎用MVVM模式未免小题大作,但是实际上,

页面与逻辑分离的情况下,我们改动其中任何一个部分都是比较清楚的。

欢迎访问微软官网下载相关软件http://www.microsoft.com/zh/cn/default.aspx

 

出处:蓝色理想
责任编辑:bluehearts

◎进入论坛网络编程版块参加讨论

作者文章 更多作者文章
中国数字媒体产学研联盟成立
第二届"昆山杯"笔记本电脑设计大赛
首届UED周末论坛图文报道
UI AWARD 2010(国家级UI设计评选)
用vs2010构建Silverlight4应用程序
热门搜索:CSS Fireworks 设计比赛 网页制作 web标准 用户体验 UE photoshop Dreamweaver Studio8 Flash 手绘 CG
站点最新 站点最新列表
100个黑色名片设计欣赏
MSDN技术资源库改进预览
图标设计欣赏——icondoctor
Web Storage全解析
Photoshop制作音乐网站播放器
解读iPhone平台的设计思路
Web Design广告字体设计技巧
Visual Studio DSL 入门(四)
HTML 5 Video概述
Visual Studio DSL 入门(三)
栏目最新 栏目最新列表
Firefox的Jetpack扩展案例分析
阿里妈妈UED谈CSS Sprites技术
Photoshop中设计绿色时尚Web网站
操作Dom节点实现间歇滚动新闻
浏览器15年历史回顾
如何创建Firefox的Jetpack扩展
全透视:CSS Z-index 属性
用PS 3D工具绘制甜麦圈包装袋
悟道Web标准:让W3C标准兼容终端
悟道WEB标准:统一思想,遵循标准

蓝色理想版权申明:除部分特别声明不要转载,或者授权我站独家播发的文章外,大家可以自由转载我站点的原创文章,但原作者和来自我 站的链接必须保留(非我站原创的,按照原来自一节,自行链接)。文章版权归我站和作者共有。

转载要求:转载之图片、文件,链接请不要盗链到本站,且不准打上各自站点的水印,亦不能抹去我站点水印。

特别注意:本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有,文章若有侵犯作者版权,请与我们 联系,我们将立即删除修改。

本文暂时没有评论和评分

您的评论
用户名:  口令:
说明:输入正确的用户名和密码才能参与评论。如果您不是本站会员,你可以注册 为本站会员。
注意:文章中的链接、内容等需要修改的错误,请用报告错误,以利文档及时修改。
不评分 1 2 3 4 5
注意:请不要在评论中含与内容无关的广告链接,违者封ID
请您注意:
·不良评论请用报告管理员,以利管理员及时删除。
·尊重网上道德,遵守中华人民共和国的各项有关法律法规
·承担一切因您的行为而直接或间接 导致的民事或刑事法律责任
·本站评论管理人员有权保留或删除其管辖评论中的任意内容
·您在本站发表的作品,本站有权在网站内转载或引用
·参与本评论即表明您已经阅读并接受上述条款
推荐文档 | 打印文档 | 评论文档 | 报告错误  
专业书推荐 更多内容
《Web标准设计》
闪魂-FlashCS4完美入门与案例精粹
Waver_h's华丽世界
Illustrator CS3质感绘画表现技法
《Flash短片轻松学》
《用户体验要素》
《JavaScript语言精粹》
作品集 更多内容

moto 产品包装 星火第二品牌 练习练习练习 最近做的几个页面 星火少儿网站 金湾名城 印刷网站飞机稿