摘要: 在一个部件组合中,导入将触发一个部件或者多个部件的实例化,这些部件暴露了所需原请求部件的必要的导入。对于一些应用程序来说,延迟实例化-防止图结构下的递归组合-可能对于将创建一个长久复杂的开销很大而不必要的对象的图来说是一个重要的因素。正是出于这样的动机,MEF支持叫做lazy exports的导出。... 阅读全文
posted @ 2014-04-13 17:21 jello chen 阅读(369) 评论(0) 推荐(0) 编辑
摘要: 组合部件使用[System.ComponentModel.Composition.ImportAttribute]特性声明导入。与导出类似,也有几种成员支持,即为字段、属性和构造器参数。同样,我们也来看下该特性类的声明:[AttributeUsage(AttributeTargets.Parameter | AttributeTargets.Field | AttributeTargets.Property, AllowMultiple=false, Inherited=false)]public class ImportAttribute : Attribute, IAttributedIm 阅读全文
posted @ 2014-04-13 15:04 jello chen 阅读(616) 评论(0) 推荐(0) 编辑
摘要: 组合部件通过[ExportAttribute]声明exports。在MEF中,有这么几种成员可声明exports的方式:组合部件(类)、字段、属性和方法。我们来看下ExportAttribute类的声明:[AttributeUsage(AttributeTargets.Field | AttributeTargets.Property | AttributeTargets.Method | AttributeTargets.Class, AllowMultiple=true, Inherited=false)]public class ExportAttribute : Attribute{} 阅读全文
posted @ 2014-04-12 23:20 jello chen 阅读(455) 评论(0) 推荐(0) 编辑
摘要: 组合部件在MEF中,一个组合部件就是一个组合单元,组合部件"出口"其它组合部件需要的服务并且从其它部件"进口"需要的服务。在MEF编程模型中,为了声明组合部件的"出口"和"进口",使用的是ExportAttribute和ImportAttribute。一个组合部件至少应该包含一个[Export]。组合部件既可以被显式的添加到Container,也可以通过使用Catalogs来创建。MEF附带的默认的Catalogs是通过[Export]来识别组合部件的。契约组合部件并不直接依赖另一个组合部件,而是依赖一个由字符串标 阅读全文
posted @ 2014-04-12 15:27 jello chen 阅读(427) 评论(0) 推荐(1) 编辑
摘要: 在MEF出现以前,其实微软已经发布了一个类似的框架,叫MAF(Managed Add-in Framework),它旨在使应用程序孤立和更好的管理扩展,而MEF更关心的是可发现性、扩展性和轻便性,后者更lightweight。我们将跟随MEF官网来学习。The Managed Extensibility Framework or MEF is a library for creating lightweight, extensible applications. It allows application developers to discover and use extensions wi 阅读全文
posted @ 2014-04-12 12:32 jello chen 阅读(563) 评论(0) 推荐(0) 编辑
摘要: 本篇来学习WPF的动画。什么是动画?动画就是一系列帧。在WPF中,动画就是在一段时间内修改依赖属性值的行为,它是基于时间线Timeline的。有人会说,要动画干嘛,华而不实,而且添加了额外的资源消耗而影响性能。尽管如此,适当的使用动画却可以使你的程序富有更好的表现力和交互性。更加可喜的是,WPF提供了丰富的动画支持,大部分的动画都可以直接通过XAML来呈现而不用去写繁琐的cs代码。在System.Windows.Media.Animation命名空间中,我们发现了许多的类,大体可归类为这么三种:基于线性内插算法动画(简单动画)、基于KeyFrame动画和基于路径动画。下面来分别介绍这三种动画: 阅读全文
posted @ 2014-03-10 23:24 jello chen 阅读(1999) 评论(0) 推荐(0) 编辑
摘要: 本篇我们来学习WPF的绘图,在2D绘图中主要有这么几个重要的类:Drawing、Visual和Shape,顺便讲下Brush和BitmapEffect。1 2D绘图1.1Drawing类Drawing类表示形状和路径的二维图,它继承自Animatable类,所以支持数据绑定、动画和资源引用等。它有这么几个子类:GeometryDrawing:包含Geometry、用于填充的Brush以及绘画轮廓的Pen(都是属性)ImageDrawing:包含ImageSource以及定义边界的RectVideoDrawing:包含MediaPlayer以及定义边界的RectGlyphRunDrawing:包 阅读全文
posted @ 2014-03-04 23:03 jello chen 阅读(3835) 评论(0) 推荐(0) 编辑
摘要: 在前面一篇我们粗略说了Style和Behaviors,如果要自定义一个个性十足的控件,仅仅用Style和Behaviors是不行的,Style和Behaviors只能通过控件的既有属性来简单改变外观,还需要有ControlTemplate来彻底定制,这是改变Control的呈现,也可以通过DataTemplate来改变Data的呈现,对于ItemsControl,还可以通过ItemsPanelTemplate来改变Items容器的呈现。1.模板WPF模板有三种:ControlTemplate、DataTemplate和ItemsPanelTemplate,它们都继承自FrameworkTemp 阅读全文
posted @ 2014-02-22 20:01 jello chen 阅读(4863) 评论(0) 推荐(1) 编辑
摘要: 在asp.net世界中,我们的美工人员会为我们准备好静态页面,它注意包括三个部分:html、css和js。而在WPF世界里,也同样有着类似这三个部分的静态页面:Xaml、Style和Behaviors,当然,它们和前面三者的作用并不对等。Style几乎完成了css和js的功能,而Sliverlight 3中引入的Behaviors(封装到Expression Blend 3中和Expression Blend 3 SDK中)只是为了方便代码的复用,我们在后面详细来说。本文主要从Style样式和Behaviors行为两个方面来讲。1.Style先来看看Style类的属性:1.1SettersSe 阅读全文
posted @ 2014-02-16 22:58 jello chen 阅读(1640) 评论(0) 推荐(0) 编辑
摘要: 说到数据绑定,其实这并不是一个新的玩意儿。了解asp.net的朋友都知道,在asp.net中已经用到了这个概念,例如Repeater等的数据绑定。那么,在WPF中的数据绑定相比较传统的asp.net中的数据绑定又有哪些优点呢?1)具有双向性,即从源到目标是双向的2)及时更新,源发生改变时,能够及时更新UI3)Validation和Converter,前者保证数据的合法性,后者保证数据的有效性接下来,我们将从这么几个方面来说明:Binding对象(对应xaml中的Binding扩展标记)、Binding的Path以及Source、Validation及Converter和MultiBinding 阅读全文
posted @ 2014-02-09 02:47 jello chen 阅读(2146) 评论(0) 推荐(0) 编辑