Windows Phone 7 MVVM模式的学习笔记

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Windows Phone 7 MVVM模式的学习笔记

一、View

View视图层

就是xaml文件主要就是界面的设计 xaml.cs文件只有默认生成的代码,MVVM模式一般不用将页面的数据初始化,事件处理的代码写在xaml.cs上

数据初始化可以通过数据绑定来实现事件的处理也是通过绑定Command来实现

先添加资源这里是放在App.xaml上加载

x:Key="Locator" />

MyProject.ViewModels是命名空间 GlobalViewModelLocator则是你写好的ViewModel类资源的ke y用Locator来表示

当然你也可以通过在具体的页面来实现上加载ViewModel作为资源

在xaml页面上就可以绑定ViewModel了

……

DataContext="{Binding MainViewModel, Source={StaticResource Locator}}"

……

">

这样就绑定了之前定义的ViewModel资源啦

然后呢你就可以在页面的控件上绑定到ViewModel的定义好的数据和Command命令了(有些项目会将Command与ViewModel完完全全分开工作,个人觉得Command放在ViewModel进行初

始化和调用会更加好一些,也就是说所有的绑定无论是数据或者是Command命令都是放在ViewModel)

Text="{Binding Item.AverageRating}"

Margin="0,0,8,0"

FontSize="24"

VerticalAlignment="Center" />

这是绑定了ViewModel的数据

这是绑定了ViewModel的Command命令这个是使用了MVVM Light tool kit框架的写法

二、ViewModel

ViewModel是视图模型层这一层是负责了对View视图层展现以及各种事件的处理灰常灰常重要

实现ViewModel层的方法很多

可以通过继承INotifyPropert yChanged 接口实现继承ViewModelBase基类来实现继承IEnumerable接口来实现使用第三方框架的基类实现等等

继承INotifyPropert yChanged 接口实现语法如下

public class PersonViewModel : INotifyPropert yCha nged

{

private string firstNameValue;

public string FirstName{

get { return firstNameValue; }

set

{

firstNameValue=value;

// 通知FirstName属性的改变

NotifyPrope rtyChange d("Fi rstName");

}

}

// 定义Propert yCha nged 事件

public event Propert yChangedEve ntHandler PropertyChanged;

public void NotifyPropert yCha nged(string prope rtyName)

{

if (Prope rtyChange d != null)

{

Prope rtyChanged(this, new Propert yChangedEvent Args(propert yName));

}

}

}

其实ViewModel类的原理都是大同小异的简单地说就是它的属性能够动态地变化,因为要跟View层交互

Command命令一般都需要定义成独立的类来实现,然后再ViewModel上实例化

Command命令类的实现的方法也几种方法

比如继承ICommand 使用第三方组件的Command命令的类

继承ICommand 的语法如下

public class MyCommand : ICommand

{

Action Excuted;

Func canExcute;

public ShowMessageCommand(Action excuted)

{

this.Excuted = excuted;

}

public bool CanExecute(object parameter)

{

return true;

}

public event EventHandler CanExecute Changed;

public void Execute(obje ct parameter)

{

//你的需要执行的代码

}

}

View层要传递的参数等等都可以通过数据绑定来获取然后再在Command命令中处理,最后再通过数据绑定展现在View视图层上

相关文档
最新文档