xaml mvvm(1)之结构
在微软winstore、wp和silverlight中xaml是用来构建UI视图的标记语言,全名Extensible Application Markup Language。在结构上类似于html,但在本质上属于.net通用编程语言范畴。
mvvm模型的实现很大程度上要归功于xaml独特的动态绑定机制,通过这种机制可以实现数据源、事件的实时绑定。如果把一个页面比作一个control,那么就对应一个model,在这个model里面存在需要绑定的事件方法、属性。
为了更好的理解mvvm的运行机制,我们可以反编译一些mvvmlight之类的mvvm框架,这里我们以wp作为示例。

值得一提的是,在wp8.1中,微软作了精简,重新编译了部分工具类,所以在用法上还是有所区别的。可以通过这个链接查看wp8.0和8.1之间的差异。http://firstfloorsoftware.com/Media/DiffLists/Windows%20Phone%208-vs-Windows%20Phone%208.1.html
在solution的引用中可以看到,微软已经作了打包。
在解决方案中主要分为三块,core主要是包含mvvm的事件属性注册方法,是驱动的核心方法,view中提供视图,viewmodel中是数据源、属性和事件方法等等。
xaml mvvm(1)之结构的更多相关文章
- 【干货】个人工作文档节选:XAML MVVM 框架易用性细节优化Tips
1 易用性细节优化 1.1 代码片段 在ViewModel内,会有大量重复性的在Property set中激发 INotifyPropertyChanged.PropertyChanged 事件 ...
- WPF学习一:XAML的资源(Resources)结构
一个初学者,把知识做个积累,如果有不对的地方,还请高手指出,谢谢! 先看一段代码:(下面是以Window WPF进行讲解,如果是Web 的话就把<Window改为<Page 而如果是 Us ...
- xaml mvvm(2)之属性绑定
通过微软INotifyPropertyChanged接口,可以实现对UI实时更新,不管是数据源或者目标对象,可以实现相互通知. 下面我们根据INotifyPropertyChanged编写一个扩展类. ...
- WPF实战案例-MVVM模式下在Xaml中弹出窗体
相信很多学习和开发wpf项目的同学都了解过mvvm模式,同样,在mvvm模式下会有一个不可忽视的问题,就是怎么在xaml中弹出窗体,而不破坏MVVM本身的结构. 关于弹出窗体的方式还是很多的,本文先讲 ...
- WPF MVVM初体验
首先MVVM设计模式的结构, Views: 由Window/Page/UserControl等构成,通过DataBinding与ViewModels建立关联: ViewModels:由一组命令,可以绑 ...
- WPF MVVM实例三
在没给大家讲解wpf mwm示例之前先给大家简单说下MVVM理论知识: WPF技术的主要特点是数据驱动UI,所以在使用WPF技术开发的过程中是以数据为核心的,WPF提供了数据绑定机制,当数据发生变化时 ...
- MVVM with ReactiveCocoa
内容提要: 本文首先对比MVC简单介绍了MVVM的概念和优点,其次,简单介绍了Reactive Cocoa的使用,最后,通过一个例子介绍了使用Reactive Cocoa的MVVM框架. 正文: 首先 ...
- WPF之旅(二)- XAML
什么是XAML XAML(Extensible Application Markup Lanaguage的简写,发音“zammel”)是用于实例化.NET对象的标记语言.尽管XAML是一种可以用于诸多 ...
- WPF01(xaml)
XAML:(转自http://www.cnblogs.com/huangxincheng/archive/2012/06/17/2552511.html) <Window x:Class=&qu ...
随机推荐
- 有关DotNetBar设计样式和运行时的样式不一致的问题
可以在 窗体类构造函数的InitializeComponent后加上下面圈出的内容: this.EnableGlass = false; 参考文章 DotNetBar如何控制窗体样式
- Kettle中配置oracle RAC
由于项目中使用了oracle v-ip做了oracle数据库集群,现在需要把项目中程序进行升级. 原来的程序中直接使用的是JDBC然后配置的kettle.properties配置文件,如下图: 根据项 ...
- mybatis 学习记录1
起因 以前刚学习java三大框架的时候持久层框架我是自学的是hibernate..感觉蛮好用的,so easy..后来大三实习公司用的是jpa(hibernate外包装一层)...再后来工作1年多用的 ...
- unity配置最簡單程序
using System;using System.Collections.Generic;using System.Linq;using System.Text;using Microsoft.Pr ...
- Java核心知识点 --- 线程中如何创建锁和使用锁 Lock , 设计一个缓存系统
理论知识很枯燥,但这些都是基本功,学完可能会忘,但等用的时候,会发觉之前的学习是非常有意义的,学习线程就是这样子的. 1.如何创建锁? Lock lock = new ReentrantLock(); ...
- C++11之 auto
[C++11类型推导] 1.使用auto的时候,编译器根据上下文情况,确定auto变量的真正类型.auto在C++14中可以作为函数的返回值,因此auto AddTest(int a, int b)的 ...
- Slim安装以及使用【转】
最近在用backbone.js 做东西,因为牵扯到REST services 所以需要后台支持,此处选择了php.Slim 是php的一个框架. 貌似国内文章对此的介绍比较少,在安装Slim的过程中出 ...
- 混合开发之iOS快速集成DSBridge
DSBridge-IOS github:https://github.com/wendux/DSBridge-IOS 使用 Native 实现API 代理类 //JsApiTest.m @implem ...
- java命令查询属性信息
System.getProperty("user.home")可以查询JAVA系统的user.home属性的值, 除了user.home,还有user.dir, file.sepa ...
- linux系统/proc/stat信息与top的cup信息的联系及区别
一. /proc 目录 Linux系统上的/proc目录是一种文件系统,即proc文件系统,与其它常见的文件系统不同的是,/proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间.它以文 ...