- 浏览: 109158 次
- 性别:
- 来自: 昆明
文章分类
- 全部博客 (151)
- 120D02 (5)
- 直升机 (1)
- 我的技术资料收集 (82)
- 的技术资料收集 (4)
- .NET Solution (2)
- ASP.NET (1)
- Linq to sql (1)
- 数据库技术(MS SQL) (2)
- 架构/设计 (1)
- 敏捷/持续集成 (1)
- C#.NET开发 (1)
- Matlab开发 (1)
- WinForm开发 (1)
- 开源技术 (1)
- jQuery (1)
- 我的博文 (4)
- js (2)
- android (2)
- 9. 读书笔记 (1)
- CSS3 (1)
- HTML5 (1)
- JavaScript (5)
- 移动开发 (2)
- 编程心得 (1)
- Linux操作系统 (1)
- (BI)商业智能 (1)
- IOS (1)
- Windows Phone (2)
- C# API (1)
- JQuery系列 (1)
- TFS (1)
- C# (2)
- ExtJs (1)
- .NET (1)
- Nginx (1)
- WCF学习笔记 (1)
- Computer Graphic (1)
- IT产品 (1)
- 工具分享 (1)
- MySelf (1)
- C#专栏 (1)
- 管理 (1)
- 基于Oracle Logminer数据同步 (1)
- 日常 (1)
- 实用工具 (1)
- 网页设计 (1)
- avalon (1)
- flash (1)
- DDD (1)
- 01 技术Android (1)
- WCF (1)
- selenium (1)
最新评论
-
464410531:
三国杀。。。。。。。。。。。。。。。。。。。。。。。。。。。。 ...
实用的职场宝典:不提拔你,就因为你只想把工作做好
介绍
MVVM的出现给WPF Silverlight程序定义了程序的框架,MVVM可以解决业务层和UI层的耦合问题,更多优点不再赘述。
在WP手机端,很多工程也都采用MVVM进行架构,比较常见的工具集是MVVM Light Toolkit 。它被应用在很多已知WP项目中,也有一些自己实现的MVVM架构工具多数也都基于此。而我们今天要说的是Caliburn Micro这个用于MVVM架构的Framework。
首先对比下MVVM Light Toolkit 和Caliburn Micro:
|
MVVM Light |
Caliburn Micro |
View和ViewModel之间的通信 |
事件:通过EventToCommand将View中的事件通过ICommand接口 Binding到ViewModel中定义的Command上 属性:Binding 到ViewModel中对应属性 |
事件:通过Action直接关联View中的事件到ViewModel里的方法中无需在ViewModel中定义Command
属性:根据命名协定自动Binding |
View和ViewModel之间如何Binding |
View 中绑定DataContext到 ViewModelLocator中的ViewModel |
根据命名协定(Conventions)自动找到View对应的ViewModel然后进行自动绑定 |
ViewModel之间如何通信 |
提供Messenger进行通信 |
提供EventAggregator进行通信 |
ViewModel中执行导航 |
自定义NavigationService |
根据命名协定通过ViewModel找到View然后执行导航 |
优点 |
概念简单清晰,容易理解 |
自动完成许多工作,大大降低开发人员编码量 |
不足 |
相比Caliburn Mirco实现相同逻辑需要的代码量更多 |
学习成本较高,许多概念初次接触不容易掌握 |
两者孰优孰劣不做过多分析,个人观点,虽然CM学习成本较高,但其提供了更多方便开发的功能,是团队的好选择。
从Hello World开始
让我们先从最简单的程序开始看下CM 框架的基本使用
我们新建好WP8程序后在References里面可通过Nuget来添加Caliburn Micro:
接下来我们要做的是将App.xaml.cs内的东西移除(没错,是移除,后面会详细介绍)之后App.xaml.cs看起来是这个样子
之后我们在根目录下定义一个类,名字随意比如Bootstrapper之后添加如下内容:
using System.Collections.Generic;
using Caliburn.Micro;
using CaliburnPractise.ViewModels;
namespace CaliburnPractise
{
public class Bootstrapper:PhoneBootstrapper
{
private PhoneContainer _phoneContainer;
protected override void Configure()
{
_phoneContainer = new PhoneContainer(RootFrame);
_phoneContainer.RegisterPhoneServices();
}
protected override object GetInstance(System.Type service, string key)
{
return _phoneContainer.GetInstance(service, key);
}
protected override IEnumerable<object> GetAllInstances(System.Type service)
{
return _phoneContainer.GetAllInstances(service);
}
protected override void BuildUp(object instance)
{
_phoneContainer.BuildUp(instance);
}
}
}
分析:CM使用PhoneContainer作为容器来提供事例(此处涉及Dependency Inject以及Container的概念具体情况不在赘述,若不很清楚可查阅相关资料,在此不进行过多的解释)
之前我们将App.xaml.cs中文件删除是因为PhoneBootstrapper对其进行了包装,PhoneBootstrapper内部对这些事件进行了接管。
接下来我们需要在App.xaml中进行Bootstrapper的定义。
如此Bootstrapper添加完毕。
接下来我们在根目录下添加MainPageViewModel并在其中定义
在MainPage.xaml中添加Textblock 并起名为Title
在Bootstrapper的Configure中加入下面代码
然后我们运行程序,便会看到神奇的事情,程序打开之后UI中的Title自动Binding了。
CM自动完成了两件事情:
1、根据命名协定自动对MainPage进行了DataContext的Binding,通过PhoneContainer找到
对应的MainPage然后Auto Binding
2、根据命名协定找到了ViewModel中名字为Title的属性,并自动Binding到Textbox的Text上。
接下来我们在MainPageViewModel中添加一个函数试试:
在View中加一个按钮名字叫做SayHello:
之后运行,点击这个按钮,又是神奇的一幕,MessageBox弹出,SayHello被执行。
分析:
通过上面的例子我们可以看到,程序将UI代码和逻辑代码分开,而且我们并没有很多繁琐的工作,这些归功与CM内部命名协定机制,进行自动Binding帮助我们完成工作。很强大不是么?
通过上面的小例子我们可以看出CM的优势和它的厉害之处,在后续文章中我会对其中的内容进行深入的分析。
先提供一些地址供大家学习:
官方文档:caliburnmicro.codeplex.com/documentation
系列博客:wp.qmatteoq.com/first-steps-with-caliburn-micro-in-windows-phone-8-the-first-project/
QQ交流群:182659848 欢迎加入进来一起探讨。
发表评论
-
Javascript:猜猜弹出的是啥?为啥? - 幸福框架
2013-06-28 13:33 432原帖地址:http://www.cnblogs.com/hap ... -
C#中WindowsForm常见控件的运用 -- - 李晓峰
2013-06-28 13:27 1747原帖地址:http://www.cnblogs.com/liy ... -
海量数据处理利器之Hash——在线邮件地址过滤 - MyDetail
2013-06-27 12:00 654原帖地址:http://www.cnblo ... -
ASP.NET MVC 4 for Visual Studio 2010 下载地址 - 张鸿伟
2013-06-27 11:48 754原帖地址:http://www.cnblogs.com/wei ... -
【ASP.NET Web API教程】6.2 ASP.NET Web API中的JSON和XML序列化 - r01cn
2013-06-26 11:00 919原帖地址:http://www.cnblogs.com/r01 ... -
[珠玑之椟]估算的应用与Little定律 - 五岳
2013-06-26 10:54 639原帖地址:http://www.cnblogs.com/wuy ... -
30行,金额转人民币大写的代码 - 史蒂芬.王
2013-06-26 10:42 1028原帖地址:http://www.cnblogs.com/ste ... -
从银行的钱荒看一个公司的团队建设 产品线过多最终导致最赚钱的项目面临破产 - James Li
2013-06-26 10:36 632原帖地址:http://www.cnblogs.com/Jam ... -
Windows 8 动手实验系列教程 实验6:设置和首选项 - zigzagPath
2013-06-25 13:39 535原帖地址:http://www.cnblogs.com/zig ... -
闲聊可穿戴设备 - shawn.xie
2013-06-25 13:33 616原帖地址:http://www.cnblo ... -
如何使用开源库,吐在VS2013发布之前,顺便介绍下VS2013的新特性"Bootstrap" - 量子计算机
2013-06-25 13:27 870原帖地址:http://www.cnblogs.com/DSh ... -
一步一步将自己的代码转换为观察者模式 - 文酱
2013-06-23 11:36 611原帖地址:http://www.cnblo ... -
iOS内存错误EXC_BAD_ACCESS的解决方法(message sent to deallocated instance) - VicStudio
2013-06-23 11:30 545原帖地址:http://www.cnblogs.com/vic ... -
记录asp.net在IE10下事件丢失排错经过 - Adming
2013-06-23 11:24 713原帖地址:http://www.cnblogs.com/wea ... -
记 FineUI 官方论坛所遭受的一次真实网络攻击!做一个像 ice 有道德的黑客! - 三生石上
2013-06-23 11:18 794原帖地址:http://www.cnblogs.com/san ... -
3、使用Oracle Logminer同步Demo
2013-06-19 10:33 571原帖地址:http://www.cnblogs.com/shi ... -
算法实践——数独的基本解法
2013-06-19 10:27 1452原帖地址:http://www.cnblogs.com/gre ... -
简单实现TCP下的大文件高效传输
2013-06-19 10:21 692原帖地址:http://www.cnblogs.com/sma ... -
avalon - 初步接触
2013-06-18 10:06 785原帖地址:http://www.cnblogs.com/aar ... -
Nginx学习笔记(一) Nginx架构
2013-06-18 09:59 529原帖地址:http://www.cnblogs.com/cod ...
相关推荐
在本文中,我们将深入探讨如何使用WPF(Windows Presentation Foundation)结合Caliburn.Micro和MEF(Managed Extensibility Framework)构建一个可插拔的框架。这些技术可以帮助开发者创建灵活、可扩展的应用程序,...
Caliburn.Micro(简称CM)是一个轻量级的、针对Windows Presentation Foundation (WPF) 和 Silverlight 平台的MVVM(Model-View-ViewModel)框架,它为开发者提供了强大的工具来简化UI开发和应用架构。这个框架以其...
Caliburn.Micro是一个轻量级的框架,主要用于构建Windows Presentation Foundation (WPF)和Silverlight应用程序,同时也支持UWP和Xamarin平台。这个框架基于Model-View-ViewModel (MVVM)设计模式,旨在简化开发过程...
本压缩包中的"CMDemo"是一个使用Caliburn.Micro构建的WPF MVVM框架源码示例,它展示了如何在实际项目中运用这个框架。以下是这个框架的关键知识点: 1. **自动视图模型查找**:Caliburn.Micro通过约定优于配置的...
Caliburn框架,全称Caliburn Micro,是一款轻量级的、面向WPF(Windows Presentation Foundation)、Silverlight以及UWP(Universal Windows Platform)的应用程序开发框架。它以MVVM(Model-View-ViewModel)设计...
Caliburn.Micro 是一款轻量级的MVVM(Model-View-ViewModel)框架,适用于WPF(Windows Presentation Foundation)平台。它旨在简化开发过程,提高开发效率,使开发者能够更加专注于业务逻辑,而非底层的UI绑定和...
这是 Caliburn Micro 的一个小扩展(直到它在 Caliburn.Micro 中?:)),它添加了一个可绑定的应用栏,完全支持透视和全景引导的视图。 在许可下获得。 变更日志 2.0.0 删除了对 Windows Phone 7 的支持(使用 1....
CMDemo是一个基于C#语言开发的WPF项目,它利用了Caliburn.Micro框架来遵循MVVM(Model-View-ViewModel)设计模式。在本文中,我们将深入探讨这个项目的关键知识点,包括Caliburn.Micro框架、MVVM架构以及它们在WPF中...
http://www.cnblogs.com/01codeworld/p/3155345.html AvalonDock 2.0+Caliburn.Micro+MahApps.Metro实现Metro风格插件式系列的基本源码
Caliburn.Micro是周围最好的MVVM框架之一(有人会说这是最好的)。 基于来自的部分端口,缺少的功能逐点添加。 为了执行适当的MVVM,必须使用支持数据绑定的控件。 一些标准的Wisej / WinForms控件不符合此要求,...
Caliburn.Micro.ReactiveUI 它是什么? 该项目的目标是允许更好地集成2个现有MVVM库: 和 。 这个想法是为了能够轻松使用Caliburn.Micro的约定和具有ReactiveUI异步功能的屏幕管理。 里边啥啊? 该项目包含...
Caliburn.Micro是一个轻量级的MVVM(Model-View-ViewModel)框架,专为WPF和Silverlight设计。它简化了视图与视图模型之间的绑定,提供了自动事件处理、屏幕导航、依赖注入等功能。Caliburn.Micro使得开发者可以专注...
Caliburn Micro是一款轻量级的MVVM(Model-View-ViewModel)框架,它为Windows Phone 7开发提供了强大的支持。这款框架的核心理念是简化UI绑定和事件处理,让开发者可以更加专注于业务逻辑,而非底层的实现细节。...
Caliburn.Micro是一个小型但功能强大的框架,旨在跨所有XAML平台构建应用程序。 借助对MVVM和其他经过验证的UI模式的强大支持,Caliburn.Micro将使您能够快速构建解决方案,而无需牺牲代码质量或可测试性。 包可在...
Caliburn.Micro 是一个轻量级的MVVM(Model-View-ViewModel)框架,用于构建WPF、Silverlight和Windows Phone应用。这个压缩包文件是"Learning-Caliburn.Micro"系列教程的源代码,适合开发者深入理解并学习如何在...
Caliburn.Micro.ReactiveUI目标该项目旨在简化和集成。结构体该项目完全按IScreen包含Caliburn.Micro的主要IScreen和IConductor实现,不同之处在于它是从ReactiveUI的而非Caliburn.Micro的派生的。 类的名称与对应的...
"使用 Caliburn.micro 2.0 的 WPF 示例列表"暗示这个项目包含一系列基于Caliburn.Micro 2.0版本的示例,这些示例用于演示如何在WPF环境中应用和操作该框架。 **Caliburn.Micro 知识点** 1. **MVVM模式**: Caliburn...
C#、WPF使用技巧,实战应用开发小系统...详细介绍了一些WPF框架的各种功能和模块,以及如何使用WPF进行GUI开发、网络编程和跨平台应用开发等。 适用于初学者和有经验的开发者,能够帮助你快速上手WPF并掌握其高级特性。
NetworkModel - 消息传递框架,现在仅用于 InProc 网络模拟, RaftAlgorithm - Raft 共识算法的错误和不完整的实现, RaftDemo - 用于可视化 raft 算法的 WPF 应用程序,需要分为两个项目。 #####需要做...
WPF Caliburn Micro + AvalonDock 2.0模板指南 这个项目是在我的之后诞生。 我花了很多时间来研究和收集问题和潜在的解决方案,以使WPF应用程序与Caliburn Micro和AvalonDock 2.0一起使用,即使这是最基本的情况。 ...