技术开发 频道

VS 2010和.NET 4.0之WPF 4改进全解析

  WPF核心

  1 新的XAML/BAML语法分析器(Parser)引擎

  WPF 4用建立在新的System.Xaml.dll之上的新的引擎换掉了XamlReader.Load(), BAML 装载, 控件和 数据模板功能的实现。作为其中的一部分工作,我们修补了许多缺陷,做了很多功能方面的改进。XamlReader.Load()的用户可以利用XAML2009中的若干新的语言特性,例如对泛型类型的支持。MarkupExtensions 和 TypeConverters 现在可以在对象图创建过程中得到更多的服务,能促成更多的场景,例如对Root对象的访问。通过使用System.Xaml.dll提供的许多新的底层API,用于分析和操作XAML的工具也将更加容易创建。

  2 DLR的数据绑定支持

  与CLR中的类不同,动态对象的成员是在运行时定义的。DynamicObject是.NET Framework 4中的一个新的抽象类,允许开发人员轻松地实现IDynamicMetaObjectProvider。随着C#中由“dynamic”关键词带来的新DLR支持,我们预期一些类库的实现会转到使用DynamicObject 和 IDynamicMetaObjectProvider,将其作为一种标准的方式来呈示运行时定义的对象属性和成员。WPF 4对IDynamicMetaObjectProvider的数据绑定支持将允许使用自然属性句法来访问动态属性。

  这个特性将扩展WPF数据绑定引擎,将现有的属性和索引器(indexer)数据绑定句法映射成对由IDynamicMetaObjectProvider提供的动态成员的访问的支持。

  3 视觉状态管理器(VSM)

  另一个支持WPF-Silverlight连续体的新特性是VisualStateManager(视觉状态管理器),引进了一种简单的新方式来将视觉状态施加给控件。这个机制提供了一种方式,通过提供将控件逻辑映射到各自的起始和终止视觉状态的方法,可以轻易地定制控件的外观(look)和行为(feel)。

图12 视觉状态管理器(VSM)

  VSM是非常灵活的,在于它能自动地生成各别状态间的过渡性动画,这样,控件的作者可以花较少的时间在编写代码上,而花较多的时间在定义在控件模板中的视觉状态上。那意味着,VSM可以给予控件作者轻松地互换控件的外观和行为的能力,VSM赋予了控件作者一种方式,可以轻易地互换控件在视觉上是如何响应用户的交互的。这是被Expression Blend完全支持的。

  4 HTML-XBAP 脚本互操作

  WPF 4提供了XBAP和宿主HTML网页(XBAP在其中是在一个HTML帧或IFRAME元素中装载的)中的脚本间的直接通讯手段。XBAP可以深入访问HTML DOM,包括对内嵌在HTML网页中的任何ActiveX控件的访问,以及对DOM事件的处理。

  WPF呈示宿主帧的主要脚本对象,这是一个动态对象,代表了帧的window对象加上HTML网页脚本中的任何自定义的脚本函数和全局变量。从这个主要脚本对象,一个应用程序可以直接调用脚本函数或者 “点入(dot into)” HTML DOM对象【译注:因为是动态对象,你可以使用“对象1.属性对象2.方法”的句法,是谓“dot into”】。这个功能可在部分信任的XBAP中以及在Internet Explorer 和 Firefox的所有支持版本下使用。

  5 UIAutomation(界面自动化))虚拟化

  WPF在过去的版本中还引进了虚拟化的控件(virtualized controls),但从来没有提供一个标准化的方式让一个自动化客户端与一个虚拟化的控件作交互。WPF 4中加了两个控件模式,ItemsContainerPattern 和VirtualizedItemPattern,来支持对虚拟化了的元素的访问和交互。ItemsContainerPattern可用来访问虚拟化的控件以及找到虚拟化的个项(item),而VirtualizedItemPattern则可用于实现虚拟化的个项。

  6 SynchronizedInput模式

  这是WPF 4中新加的另一个UIA(界面自动化)控件模式,这个模式可为自动化客户端用来跟踪某个输入事件是否被WPF框架导向到了正确的元素之上。这个模式有3个相关的自动化事件,即,InputReachedTargetEvent, InputReachedOtherElementEvent 和 InputDiscardedEvent,来表示输入是在何处处理的。

  客户端部署

  1 .NET Framework 4 的 Client Profile

  为改进.NET Framework 4部署的大小,时间和总的体验,现在提供了一个更精简的 .NET 版本,是完整的.NET Framework 4 的一个子集,叫做.NET Framework 4 Client Profile。.NET Framework 4 Client Profile目前可重分发的大小是30MB左右,完整的Microsoft .NET Framework 4是Client Profile的纯超集(superset)。

  .NET Framework 4 Client Profile的目的是改进和帮助精简客户端应用的部署大小,部署时间,可靠性和总的部署体验。Client Profile包含了大多数常见桌面客户端应用(包括Windows Forms 和 WPF 应用)所需的功能,预期大多数客户端应用的开发人员将会针对这个Client Profile,而不是完整的.NET Framework 4做开发。因为这个原因,大多数Visual Studio 2010 Beta 2 客户端项目模板默认针对的是 .NET Framework 4 Beta 2 Client Profile。

  与.NET Framework 3.5 SP1 Client Profile有所不同,.NET Framework 4 Client Profile中的一个重要增强是其对所有平台和操作系统的支持,包括那些完整的框架所支持的操作系统,象Windows Vista, Windows XP, Windows Servers 2003 和 2008, Windows 7 (所有操作系统同时支持x86和x64版本)。

  你可以查看或改变你针对的框架版本,打开你的项目的属性窗口,然后选择 "Application"页面,然后你可以改变“Target framework(针对的框架)”下拉框为完整的 .NET Framework或者.NET Client Profile。项目的“Publish”属性页面也允许你选择ClickOnce部署所需的必备软件(prerequisite)。 在Beta2中,VS 2010会根据你项目的主要针对目标自动选择正确的profile(Client Profile版本或者完整版本):

图13  .NET Framework 4 的 Client Profile

  上面同样的必备软件对话框会在你创建“安装和部署”项目(在菜单“添加新的项目”/“其他项目类型”下)时出现,NET4 Client Profile必备软件项在这个情形下是默认选择了的。

0
相关文章