Caliburn.Micro简介

2017-09-28 08:20:32来源:CSDN作者:pluto_cj人点击

分享

Caliburn.Micro简介

Action消息
  Action机制允许您将WPF触发器(例如Button的“Click”事件)绑定到View Model或Presenter上的方法。该机制也允许将参数传递给该方法。参数可以数据绑定到其他WPF其他元素上,也可以传递特殊值,如DataContext或EventArgs。所有参数都会自动转换为方法的签名。该机制还允许“Action.Target”独立于DataContext而变化,并使其能够在WPF中与触发器在不同点地方进行声明。当触发器触发,“消息”将通过元素树来寻找能够调用指定方法的Action.Target(处理程序)。这就是为什么我们称之为消息。Action消息的“冒泡”性质非常强大,特别是在主/细节场景中非常有用。除了调用,该机制支持“CanExecute”守卫。如果Action具有相同的属性或方法,具有相同的名称,但在“Can”之前,则Action的调用将被阻止,WPF元素将被禁用。行动还支持协同程序(见下文)。这对于现有的Caliburn用户来说都是相当标准的,但是我们在Caliburn.Micro中进行了一些改进,这些改进将进入更大的框架。Caliburn.Micro的Action消息基于System.Windows.Interactivity实现。这允许由社区开发的任何TriggerBase触发动作。此外,Caliburn.Micro的Action在Blend中拥有完整的设计时间支持。

Action约定
  我们创造性地支持一组围绕“Action消息”特性的绑定约定。这些约定基于x:Name。因此,如果在你的ViewModel里面定义一个名为Save的方法,并在UI中定义一个名为Save的按钮,我们将自动创建一个Click事件的EventTrigger,并为Save方法定义一个Action消息。此外,我们将检查方法的签名并正确构建ActionMessage参数。该机制可以关闭或定制。你甚至可以更改或天剑不同控件的约定。例如,你可以为Button的MouseMove添加约定来代替Click的约定。

Binding约定
  我们还支持基于约定的数据绑定。这也适用于x:Name。如果你的ViewModel里的属性与元素具有相同的名称,我们将尝试对它们进行数据绑定。我们可以通过步骤对约定进行配置,配置BindingMode,StringFormat,ValueConverter,Validation和UpdateSourceTrigger。

Screen和Conductors
  Screen,ScreenConductor和ScreenCollection模式支持在一个应用程序中对活动的当前元素进行基于model的跟踪。Caliburn.Micro的这些模式的实现是Caliburn发现的一个演变,支持构造任何类型的类,而不仅仅是IScreen的实现的。这些改进正在引进Caliburn。你会发现Caliburn.Micro的Screen实现非常全面,甚至可以轻松处理异步关机。

Event Aggregator(事件聚合)
  Caliburn.Micro的EventAggregator简单而强大。聚合器遵循总线式的pub/sub模型。你使用Aggregator注册一个消息处理程序,并给你发送感兴趣的消息。你可以通过实现IHandle来声明你感兴趣的消息类型。对处理程序的引用松耦合,publication产生于UI线程,并且我们支持多态subscription。

Coroutines(协同程序)
  任何Action都可以返回IResult或IEnumerable类型,来实现强大的处理异步编程方法。此外,通过IResult的实现可以访问执行环境上下文,环境上下文告诉他们正在执行Action消息,什么元素发送的消息,Action消息由哪个实例(被调用)以及该实例的View是什么。这种上下文文实现松散耦合的声明机制,通过该机制,Presenter或View-Model可以与其View进行通信,而不需要随时对其进行引用。

View 定位器
  应用程序中的每个ViewModel,Caliburn.Micro有一个基本策略来定位其对应的的View。我们基于命名约定来实现这一点。例如,如果你的VM为MyApplication.ViewModels.ShellViewModel,我们将寻找MyApplication.Views.ShellView。另外,我们通过在Xaml中附加View.Context来支持同一View-Model中的多个视图。所以,假设上述的模型使用View.Context =“Master”,我们将搜索MyApplication.Views.Shell.Master为其View。当然,这一切都是可定制的。

View Model定位器
  尽管Caliburn.Micro倾向于ViewModel-First访问,但我们也通过相同的映射语义在View中提供View Model来支持View-First。

窗口管理器
  该Window Manager提供了以View-Model为中心的方式来显示Windows。通过简单的传递一个VM的实例,它将定位视图,如果需要,将其包装在一个窗口中,应用你配置的所有约定并显示窗口。

PropertyChangedBase和BindableCollection
  Caliburn.Micro实现支持字符串和基于lambda的更改通知。它还确保在UI线程上引发所有事件。BindableCollection是一个继承自ObservableCollection的简单集合,但是这样可以确保在UI线程上引发其所有事件。

Bootstrapper
  需要配置那些东西才能使此框架启动并运行?不多。只需从Bootstrapper继承,并将自定义Bootstrapper的实例添加到应用程序的ResourceDictionary中。完成。如果需要,可以覆盖几种方法来插入您自己的IoC容器,声明应该为Views检查哪些程序集。这很简单。

Logging
  Caliburn.Micro实现了基本的日志记录抽象。在任何严格框架中鼓励“约定大于配置的”,这一点非常重要。框架的所有最重要的部分都包含日志记录。想知道哪些惯例是不适用的?打开日志记录。想知道正在执行哪些动作?打开日志记录。想知道什么事件正在发布?打开日志记录。你得到的picture。

MVVM和MVP
  如果不明显,该框架可以使用MVVM。MVVM本身并不难,但Caliburn.Micro不仅仅是实现它。我们想要编写优雅,可测试,可维护和可扩展的表示层代码…我们希望这样做很容易。这就是这个。如果您更喜欢使用Supervising Controller和PassiveView而不是MVVM,请继续。你会发现Caliburn.Micro可以帮助你很多,特别是它的Screen/ScreenConductor的实现。如果您对我刚才提到的任何目标不感兴趣,这个框架不适合你。
  要清楚,这不是一个简单框架。正如我所说,我真的专注于支持Caliburn v2的核心和最常用的功能。事实上,Caliburn.Micro将是我的默认框架,我建议如果您开始一个新的项目,您将从Micro框架开始。我一直非常小心使应用程序开发人员API与Caliburn的完整版本保持一致。事实上,我在Caliburn.Micro的改进正在折叠成Caliburn v2。这是什么好的部分?您可以开始使用Caliburn.Micro开发,那么如果您遇到边缘案件或者还有其他需要移植到Caliburn,那么您的应用程序很少或根本就没有改变。

源地址:http://caliburnmicro.com/documentation/introduction

相关文章

    无相关信息

最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台