博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Caliburn教程1
阅读量:5324 次
发布时间:2019-06-14

本文共 1641 字,大约阅读时间需要 5 分钟。

从MEF谈起

说起Caliburn就不得不先说说MEF框架,因为Caliburn在很多地方上用到了这个模型。

MEF(Managed Extensibility Framework)是.net 平台下的一个框架,全称托管扩展框架,是将.net下的代码进行组件式组合而设计的,MEF的具体内容我会再详细去写,本次内容重点并非它,这里我们只是介绍下,MEF框架支持两类操作,Import and Export, 这两类操作是很重要的组件功能, 将一个类视为一个松耦合的组件, 这个类可以从一个接口派生, 然后Export成接口的形式。 这样,Import组件时, 就可以使用该类的实例化对象了。
Caliburn中大量使用此组件模型,众多的类的组合,大部分都导出成了对应的接口的模式进行组合,我们在开发时,也可以继续使用。

Caliburn的消息响应

这句话就是了,cal:Message.Attach="Save"就将当前的默认消息绑定到了ViewModel中的void Save()函数中了。另外,cal作用域要手动添加:xmlns:cal="http://www.caliburnproject.org"

Caliburn开启新窗口

public void Save()    {        windowManager.ShowWindow(new WindowViewModel());    }

WindowManager

[Export(typeof(IShell))]public class ShellViewModel : Screen,IShell{    readonly IWindowManager windowManager;        [ImportingConstructor]    public ShellViewModel(IWindowManager windowManager)    {        this.windowManager = windowManager;    }        public void Save()    {        windowManager.ShowWindow(new WindowViewModel());    }    public bool CanSave()    {        return true;    }}

这里的CanSave函数会自动被绑定为,判读Save功能是否能使用上,如果不能,上面绑定的按钮也会自动变为灰色

各组件简介

Caliburn中的ActionMessages是整个框架的精髓,可以自动的绑定值,并且可以传递值,非常方便快捷。

Action Conventions提供了一系列默认的绑定策略,例如XXXView自动绑定到XXXViewModel,

如果有一个按钮Name=Save,其ViewModel中又有一个Save方法,那么这个按钮的Click事件就会默认绑定到这个函数上去。更方便的是,你还可以设计公约,使得其他公约绑定可以实现。

Binding Conventions使得属性也可以自动绑定,如何一个子元素的名字和其ViewModel中的属性名字相同,系统会试图绑定它们。并支持用户设置自己的自动绑定。

Screen, ScreenConductor and ScreenCollection 可以使得基于模型的跟踪活动元素,强制生命周期,优雅的结束应用程序等

EventAggregator 是一个基于pub/sub模型的管理器,你首先要注册一个message handler, 然后他就会发给你任何你想要监听的消息,甚至支持多态。要声明一个感兴趣的message,需要在UI线程中调用 IHandle<TMessage>

转载于:https://www.cnblogs.com/sunxfancy/p/3578738.html

你可能感兴趣的文章
C# MD5-16位加密实例,32位加密实例
查看>>
无线点餐系统初步构思
查看>>
AJAX
查看>>
前端之CSS
查看>>
List注意点【修改】
查看>>
sqoop导入导出对mysql再带数据库test能跑通用户自己建立的数据库则不行
查看>>
拓扑排序的原理及其实现
查看>>
对StageWebView捕获位图时空白
查看>>
Provison Profile管理及存放路径
查看>>
shop--8.店铺列表展示--前端开发
查看>>
转:Can not issue data manipulation statements with executeQuery()错误解决
查看>>
详解C#委托,事件与回调函数(转)
查看>>
744. Find Smallest Letter Greater Than Target
查看>>
java实现二维码的生成.
查看>>
Android 发展思路
查看>>
Pythonic
查看>>
contentprovider的学习实例总结
查看>>
Sharepoint 自定义字段
查看>>
TQ2440之中断
查看>>
MySQL 触发器简单实例
查看>>