- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
CaliburnMicro开发框架介绍(WP8).
Caliburn.Micro开发框架介绍
Caliburn是一套基于XAML的开发框架,它小巧而强大。利用它不但能提高开发效率,还可以提高XAML程序开发的可维护行、可扩展性和可测试性。Caliburn.Micro则是专门针对Windows phone开发的版本。
MVVM简介
MVVM源于微软的软件开发架构模式,可以粗略的认为它是MVC模式的发展,原来Controller的职能被拆分,其中值转换器(Value Converter)和绑定器(binder)已经由框架实现,程序员可以更关注在逻辑实现上。MVVM的开发基于事件驱动,实现UI层和逻辑层的分离,从而使UI设计人员和程序员各施其职。MVVM中的View Model在Model和View之间扮演着值转换器的角色,把Model的数据交给View去绑定,把View的数据提交给Model;同时也要实现mediator设计模式,成为View和Model之间的逻辑协调者。
Caliburn.Micro简介
Caliburn.Micro使用各种的配置和约定使得代码工作变得简洁。比如:你无需使用ViewModelLocator为某个View定位它的View Model,在Caliburn.Micro中只需要按照约定把View的名字加上后缀ViewModel,就是它的View Model的名字,如:MainPage和MainPageViewModel。
Caliburn.Micro自动把ViewModel绑定到View的DataContext。如果ViewModel的属性名和控件的名称相同,那么就会自动绑定上。如果该属性的值发生变化,控件的也能得到更新。
此外,Caliburn.Micro还为Windows phone的特性提供辅助,例如:tombstone的管理,应用程序生命周期和launcher。
当然,你也可以自定义各种约定。
准备工作
下载
Caliburn.Micro可以通过Visual studio的NuGet工具获得,也可以在其官网下载发布包、源代码和例子。/
入口bootstrapper
Bootstrapper是Caliburn.Micro的入口,所有的ViewModel必须在这个类里注册,否则Caliburn.Micro无法为你的View和ViewModel建立关联。
如果需要自定义命名约定,也是在这个类里定义。
我们新建一个WP8工程,先删除默认创建的MainPage.xaml,创建Views目录,在Views目录下创建MainPage.xaml,创建ViewModels目录,在ViewModels下创建MainPageViewModel.cs类,修改WMAppManifest.xml中的起始页面为Views/MainPage.xaml。
在工程的根目录下创建bootstrapper,其内容如下。
public class AppBootstrapper : PhoneBootstrapper
{
PhoneContainer container;
protected override void Configure()
{
container = new PhoneContainer(RootFrame);
container.RegisterPhoneServices();
//注册所有ViewModel
container.PerRequestMainPageViewModel();
AddCustomConventions();
}
static void AddCustomConventions()
{
//ellided 自定义命名约定
}
protected override object GetInstance(Type service, string key)
{
return container.GetInstance(service, key);
}
protected override IEnumerableobject GetAllInstances(Type service)
{
return container.GetAllInstances(service);
}
protected overr
文档评论(0)