SilverlightCaliburn应用框架2

         Silverlight-Caliburn应用框架1

         Silverlight-Caliburn应用框架2

         Silverlight-Caliburn应用框架3

         Silverlight-Caliburn应用框架4 

         Silverlight-Caliburn应用框架5

         Silverlight-Caliburn应用框架6

     前一篇对Cailburn有个先入为主的印象,这篇我们具体的认识一下Caliburn这个框架。

        Caliburn框架本身为支持UI设计支持了MVC,MVP,MVVM,Commands和App Controller模式,这样它就提供了较为普遍的UI架构问题的解决方案,

那么其中还包括减轻了对依赖注入容器的使用。

        Caliburn框架提供了几个比较重要的特性:

        Action:Caliburn扩展了之前SL的不能绑定到方法的能力,其为一些相关类提供了手势,附加事件等持久型的API,这种方法绑定移除了MVP,MVVM中代码的耦合,同时Caliburn的Action机制可以从UI上传递参数给方法,并将返回的结果绑定到UI上,它还提供了一个Filter机制用于装饰方法,这些过滤器可以通过禁用,折叠,隐藏控件影响UI,Caliburn也可以执行异步方法和回调,框架本身已经对线程进行处理。

       Command:Command可以解决SL3之前不支持Command的问题,Command是构建在Action之上,自然可以共享一些特性,比如说支持多个输入参数,过滤器和异步执行,这里父Command不仅可以执行多个子Command命令,也可以被子命令通过多种方式影响。

       App Model:Caliburn通过IPersenter接口支持基于MVP,MVVM的UI架构,其通过Presenter, PresenterManager, MultiPresenter等类对各种UI组件进行激活,禁用和关闭等场景的操作。

      Convention:这一点,第1篇已经粗略提到,Caliburn定义了一些基本的规范用于获取对应视图,Action的绑定等,这个部分也可以自己进行扩展或定制

      Testability:Caliburn对测试数据绑定提供了丰富的支持,并定义了接口用于验证对象的变化通知,Caliburn的绑定校验可以准确的告诉你问题所在以及相关错误的信息。

      Utilities:Caliburn提供了丰富的类和扩展方法,其中最受欢迎的就是Execute静态类了。

      上面主要是对Cailburn的几个特点进行了一些说明,这个部分是我从官方网站上进行的翻译,也是第一次翻译技术文档,有理解不对的,欢迎指正!其实也可以看出来,我翻译的内容也是有侧重点的,因为我主要关注的两点就是Action和Command,对于其它部分,若是感兴趣可以自己去官网了解。

      这篇我们先关注一下Silverlight应用Caliburn框架的配置,创建好项目之后,先添加dll:

            Caliburn.Core.dll,

            Caliburn.PresenationFramework.dll ,

            Microsoft.Practices.ServiceLocation.dll

      这个在第1篇中已经详细说过,主要看下面的部分:

      现在我们需要在App.cs中进行配置

      首先引用命名空间

       using Caliburn.Core;
       using Caliburn.PresentationFramework;
现在修改Application_Startup
       private void Application_Startup(object sender, StartupEventArgs e)
        {         
            CaliburnFramework.ConfigureCore().WithPresentationFramework().Start();
            this.RootVisual = new MainPage();
        }

       这行代码就将Calibrun中核心框架与各种特性配置到应用程序中了,这时候程序就可以编译了,你也可以像第一篇所演示的那样从CaliburnApplication类继承 ,这是最简单的配置方式,除此之外,还有许多方法用来自定义配置,因为从本质上讲,Caliburn是一系列UI服务的集合,那么其中任一服务都可以单独进行配置,不过这种情况出现相对而言也是比较少的,主要是利用了Caliburn对依赖注入容器的一个扩展机制,上面的例子就是Caliburn默认的通过DI容器进行的简单配置,也可以通过IServiceLocator接口进行配置,这里不是我所关注的地方,如果必要,请参阅相关文档。

原文地址:https://www.cnblogs.com/626498301/p/1807168.html