Windows Phone 7 MVVM模式的学习笔记
一、View
View视图层
就是xaml文件 主要就是界面的设计 xaml.cs文件只有默认生成的代码,MVVM模式一般不用将页面的数据初始化,事件处理的代码写在xaml.cs上
数据初始化可以通过数据绑定来实现 事件的处理也是通过绑定Command来实现
先添加资源 这里是放在App.xaml上加载
<!--这里是将你写好的ViewModel放到了程序资源里面去,接下来的绑定将会用到的-->
<Application.Resources>
<vm:GlobalViewModelLocator xmlns:vm="clr-namespace:MyProject.ViewModels"
x:Key="Locator" />
</Application.Resources>
MyProject.ViewModels是命名空间 GlobalViewModelLocator则是你写好的ViewModel类 资源的key用Locator来表示
当然 你也可以通过在具体的页面来实现上加载ViewModel作为资源
在xaml页面上就可以绑定ViewModel了
如
<phone:PhoneApplicationPage
……
DataContext="{Binding MainViewModel, Source={StaticResource Locator}}"
……
">
这样就绑定了 之前定义的ViewModel资源啦
然后呢 你就可以在页面的控件上绑定到ViewModel的定义好的数据和Command命令了(有些项目会将Command与ViewModel完完全全分开工作,个人觉得Command放在ViewModel进行初
始化和调用会更加好一些,也就是说所有的绑定无论是数据或者是Command命令都是放在ViewModel)
如
<TextBlock Grid.Row="1"
Text="{Binding Item.AverageRating}"
Margin="0,0,8,0"
FontSize="24"
VerticalAlignment="Center" />
这是绑定了ViewModel的数据
<i:Interaction.Triggers>
<li:TapTrigger>
<cmd:EventToCommand Command="{Binding TapCommand}" PassEventArgsToCommand="True"/>
</li:TapTrigger>
</i:Interaction.Triggers>
这是绑定了ViewModel的Command命令 这个是使用了MVVM Light toolkit框架的写法
二、ViewModel
ViewModel是视图模型层 这一层是负责了对View视图层展现以及各种事件的处理 灰常灰常重要
实现ViewModel层的方法很多
可以通过继承INotifyPropertyChanged 接口实现 继承ViewModelBase基类来实现 继承IEnumerable<T>接口来实现 使用第三方框架的基类实现等等
继承INotifyPropertyChanged 接口实现语法如下
public class PersonViewModel : INotifyPropertyChanged
{
private string firstNameValue;
public string FirstName{
get { return firstNameValue; }
set
{
firstNameValue=value;
// 通知FirstName属性的改变
NotifyPropertyChanged("FirstName");
}
}
// 定义PropertyChanged 事件
public event PropertyChangedEventHandler PropertyChanged;
public void NotifyPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}
其实ViewModel类的原理都是大同小异的 简单地说就是它的属性能够动态地变化,因为要跟View层交互
Command命令一般都需要定义成独立的类来实现,然后再ViewModel上实例化
Command命令类的实现的方法也几种方法
比如继承ICommand 使用第三方组件的Command命令的类
继承ICommand 的语法如下
public class MyCommand<T> : ICommand
{
Action<T> Excuted;
Func<bool> canExcute;
public ShowMessageCommand(Action<T> excuted)
{
this.Excuted = excuted;
}
public bool CanExecute(object parameter)
{
return true;
}
public event EventHandler CanExecuteChanged;
public void Execute(object parameter)
{
//你的需要执行的代码
}
}
View层要传递的参数等等都可以通过数据绑定来获取然后再在Command命令中处理,最后再通过数据绑定展现在View视图层上
三、Model
Model层比较简单就是一个面向对象的实体类
比如
public class Person
{
public int age { get; set; }
public string name { get; set; }
}
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层使用
转载于:https://www.cnblogs.com/linzheng/archive/2011/03/22/1991966.html
Windows Phone 7 MVVM模式的学习笔记相关推荐
- Windows Phone 7 MVVM模式通讯方式之实现Command
MVVM模式的View与ViewModel的三大通讯方式:Binding Data(实现数据的传递).Command(实现操作的调用)和Attached Behavior(实现控件加载过程中的操作). ...
- .net设计模式 (享元模式)学习笔记
运用设计模式只是为了解决一类问题的,当解决掉当前一类问题,通常会在解决这个问题时候 带来其他问题 合理应用扬长避短 结构性设计模式:关注的是类与类之间的关系 .net设计模式 (享元模式)学习笔记 ...
- 电子绘画画笔笔刷模式的学习笔记
PS画笔笔刷模式的学习笔记 笔刷基础 画笔本身的性质 理解画笔在计算机层面上的实现方式 图层之间关系 总结 笔刷基础 本学习笔记以Photoshop为例,讲解电子绘画的画笔.图层的关系. 画笔本身的性 ...
- windows系统的fiddler抓包学习笔记(2020-03-30 星期一)
1.学习http协议 1)HTTP请求报文 a.请求方法 b.URL c.请求头 2)HTTP响应报文 a.状态码 2.fiddler 1)fiddler页面简介 2)fiddler工具条按钮的介绍 ...
- UML和模式应用学习笔记-1(面向对象分析和设计)
大学时曾经开过<UML和模式应用>的课程,当时没有引起足够的重视,只为了应付考试并没有真正掌握书中的内容:现在工作中经常要用到UML及设计模式,决定每周花点时间重新对书中的内容进行学习:本 ...
- Windows Phone 7 MVVM模式数据绑定和传递参数
数据绑定使用了ObservableCollection<T> 类来实现,ViewModel通过继承GalaSoft.MvvmLight.ViewModelBase类来实现,Command ...
- Windows内核安全与驱动编程学习笔记----1.WDK安装
WDK安装安装 1.WDK下载 VS2019设置 EWDK使用 注意事项 错误解决方法 系统错误1275 系统错误557 1.WDK下载 微软已经不再使用connect.microsoft.com,新 ...
- JavaScript设计模式之策略模式(学习笔记)
在网上搜索"为什么MVC不是一种设计模式呢?"其中有解答:MVC其实是三个经典设计模式的演变:观察者模式(Observer).策略模式(Strategy).组合模式(Composi ...
- 模式的学习笔记----转摘自把爱好作为自己工作的人
最近,Microsoft越来越强调设计模式.如果你不熟悉设计模式,那么你会被这些新的术语和从来没有看见到的UML图所淹没.这次对设计模式的强调,相对于词汇的变化来讲,在方法论上并没有太多的变换,因为M ...
- Facade模式——设计模式学习笔记
Facade模式 一 意图 为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用. 二 动机 将一个系统划分成为若干个子系统有利于降低系统的复 ...
最新文章
- selenium 操作 html 5,[Selenium] WebDriver 操作 HTML5 中的 video
- Spark任务调度流程及调度策略分析
- X86汇编——简易通讯录
- Spring boot指定日志配置
- linux注释内容,Linux 中snmptrapd的内容有大虾能帮我注释下吗?谢谢了
- 真格量化——50etf与期权对冲策略
- 2019年普通高等程序员招生统一考试
- 面试总结之人工智能AI(Artificial Intelligence)/ 机器学习(Machine Learning)
- Tyvj P1016 包装问题 (DP)
- 蓝奏(lanzous)解析工具
- java cryptojs_CryptoJS用法
- Mysql监控工具–mytop
- Ehcache 的简单使用
- 几行烂代码,我赔了16万。
- 个人计算机架构和相关的设备组件
- ECC椭圆曲线算法(1)阿贝尔群
- 考研政治——马克思辩证法中的两大特征和五大范畴
- Android 12 Watchdog(4) Trace生成过程
- JavaScript 高级
- 解决导出CSV文件乱码的问题