一点一滴掌握WPF应用系列 - 之三:WPF4的九大新特性全解析

本文将大致地介绍有关Windows Presentation Foundation(WPF)4的新增加的以及一些增强功能。具体来说,本文中将包含以下内容: 新控件、可视化状态管理器、触摸屏编程、 图形和动画、 文本、 绑定、 XAML浏览器应用程序、 WPF和Windows、 WPF和Silverlight设计器。

  一、新控件

  又有三个新的控件被添加到WPF4中,从而更易于创建业务型应用程序。请注意,这些控件几乎完全兼容于Silverlight的各个版本。这有助于使开发人员实现代码重用,从而快速创建客户端应用程序和Web应用程序。这三个新引入的控件分别是: DataGrid、 Calendar、DataPicker。

  二、可视化状态管理器

  WPF4针对在ControlTemplate模板中改变可视化状态提供了更好的支持。VisualStateManager类及其他相关支持类被添加到WPF4中,这使开发人员可以使用诸如Microsoft ExpressionBlend这样的工具根据控件的视觉状态来定义其外观。例如,当一个Button控件处在按下状态时您可以定义它的外观。想了解更多的有关利用VisualStateManager为现有控件创建ControlTemplate模板的信息,请参阅文章《通过创建ControlTemplate模板定制现有控件的外观》。有关使用VisualStateManager创建新控件的信息,请参阅另一篇文章《创建具有可定制外观的控件》。

  【注意】对于没有提供模板ControlTemplate的元素也可以利用VisualStateManager的GoToElementState方法实现状态间的过渡效果。

  三、触摸屏编程

  现在,WPF元素可以使用触摸式输入。当用户触摸触摸屏上的元素时,UIElement、UIElement3D和ContentElement类都定义了相应的事件供开发者使用。除了触摸事件外,UIElement类还支持触控(Manipulation)。所谓触控,是指用户可以通过触摸屏缩放、旋转或平移一个UIElement元素。例如,一款图片浏览应用程序可能会允许用户通过触摸计算机屏幕上的照片来移动、缩放、调整尺寸和旋转照片。欲了解有关触摸屏编程的更多的信息,请参阅文章《演练:创建您的第一个触摸应用程序》和《输入概述》。

  四、图形和动画

  在图形和动画方面,也有几处新的更动。

  1. 布局舍入(Layout rounding)

  当一个物体的边缘正好位于一个像素设备的中间时,DPI独立的图形系统能够创建诸如模糊或半透明边缘这样的艺术效果。早期版本的WPF中包含了像素对齐(pixel snapping)功能以帮助实现这样的效果。从Silverlight2开始引入了布局舍入技术,这是另一种移动元素的技术,以便使元素的边缘落在整个像素的边界。现在,WPF也提供了对布局舍入的支持,这是通过FrameworkElement类的关联属性UseLayoutRounding实现的。

  2. 缓存组件

  通过使用新引入的BitmapCache和BitmapCacheBrush类,你可以缓存可视树中的复杂部分(例如位图),从而大大提高了渲染速度。位图仍然能够保持对用户输入(如鼠标单击)的响应,您可以像使用任何画刷一样把此位图绘制到其他元素之上。

  3.Pixel Shader 3支持

  WPF 4基于WPF 3.5 SP1中引入的ShaderEffect支持,现在它可以允许应用程序使用Pixel Shader(PS)3.0版本创建效果。PS 3.0着色模型比2.0版本更为复杂,在它所支持的硬件上允许更多的效果。

  4. 擦除功能

  现在,你可以使用擦除功能来增强动画效果,它可以使你额外地控制动画的行为。例如,您可以针对一幅动画施加ElasticEase效果,从而使此动画具有弹性行为。有关这方面的更多的信息,请参阅System.Windows.Media.Animation命名空间中定义的擦除类型。

  五、文本

  在文本支持方面,也进行了若干更改,主要有:

  1. 新的文本渲染栈

  以前的WPF文本渲染栈已被完全取代。新版本的文本渲染栈为文本渲染的可配置性、清晰度和国际语言支持方面进行了极大改进。现在,新的文本栈支持显式地选择锯齿(aliased),灰度,或ClearType渲染模式。而且,现在的文本栈支持显示优化的字符布局,从而能够产生可以与Win32/GDI文本清晰度相媲美的文字。新的文本栈还允许优化文字提示和对齐,而不论该文本是动画型或是静态的文本。新的文本栈还通过使用嵌入位图取代较小字体的方式来支持字体,从而让许多东亚字体渲染的清晰度可以媲美Win32/GDI文本。

  2. 选择和光标定制

  现在,您可以指定画刷来绘制选择区域并指定光标用于输入和读取控件(如TextBox 、RichTextBox和FlowDocumentReader)。现在,TextBoxBase类新添加了两个属性:

  3. SelectionBrush:允许您针对突出选定的文本创建一个画刷。

  4. CaretBrush:允许您更改绘制光标的画刷。

  六、绑定

  在绑定方面,进行了许多的修改并提供了一些增强功能。

  1. 绑定到InputBinding类的命令

  可以把一个InputBinding类的Command属性绑定到一个代码中定义的实例上。下列属性都是依赖属性,所以,它们都可以成为绑定的目标:

  2. InputBinding.Command

  3. InputBinding .CommandParameter

  4. InputBinding.CommandTarget

  5. KeyBinding.Key

  6. KeyBinding.Modifiers

  7. MouseBinding.MouseAction

  此外,InputBinding,MouseBinding和KeyBinding类都是从它们所隶属的FrameworkElement中接收数据上下文。

  8. 绑定到动态对象

  WPF中支持对实现IDynamicMetaObjectProvider的对象的数据绑定。例如,如果您在代码中创建了一个继承自DynamicObject的动态对象,那么,您可以使用标记扩展在XAML中绑定此对象。有关这方面的详细信息,请参见《绑定源概述》。

  9. 可绑定的Run.Text

  现在,Run.Text已成为一个依赖属性。这样修改的主要优点是,现在它支持单向绑定。此外,它还支持如风格化和模板化这样的依赖属性等特片。

  七、XAML浏览器应用程序

  又有两种新功能被添加到XAML浏览器应用程序(XBAP)中。

  1. HTML-XBAP脚本互操作

  现在,当您的应用程序宿主在一个HTML框架元素内时,您可以与包含XBAP的Web页面进行通信。这个XBAP可以深度访问HTMLDOM树和处理DOM事件。有关这方面更多的信息,请参考有关BrowserInteropHelpe.HostScript属性的介绍。

  2. 完全信任型XBAP应用部署

  如果您的XBAP应用需要充分的系统信任,现在的用户可以自动接收标准的ClickOnce评价性安装提示。此时,用户可以从企业内网或其他的浏览器信任站点上安装此应用程序。

  欲了解关于上述两个功能的更多信息,请参见《WPF中的XAML浏览器应用程序概述》。

  八、WPF和Windows

  Windows7的任务栏提供了增强的功能,能够使您使用任务栏按钮及时地与用户沟通信息并提供常规任务。在System.Windows.Shell命名空间中定义的新类型为Windows7任务栏功能提供了托管包装器并管理传递给Windows外壳程序中的数据。例如,JumpList类型允许您操控制跳转列表,而TaskbarItemInfo类型允许您操作任务栏缩略图。

  在Windows 7和Windows Vista系统中的WPF对话框现在支持Windows 7和Windows Vista风格的外观,其中包括定制显示位置,等等。更详细的信息,请参见有关FileDialogCustomPlace类的介绍。

  九、WPF和Silverlight设计器

  在Visual Studio 2010中,各种设计器都得到改进以帮助创建WPF或Silverlight应用程序。

  1. 针对Silverlight的改进支持

  在Visual Studio 2008中,您可以安装Silverlight Tools,从而在VisualStudio中创建Silverlight应用程序。然而,Visual Studio2008针对Silverlight项目的设计器支持是有限的。在Visual Studio2010中,为Silverlight和WPF项目的设计器支持都是一样的。例如,在现在的Silverlight项目中你可以使用鼠标在设计器界面中选择和放置组件。

  2. 支持多种平台版本

  在Visual Studio 2008中,控件的设计时支持只能够针对最新版本的WPF平台。在Visual Studio2010中,这种设计时支持被扩展到多种平台,包括WPF 3.5,WPF 4,Silverlight 3,Silverlight4的支持,甚至还有未来发行的平台。由于相同的可扩展API存在于所有这些平台中,所以,控件设计时作者可以很容易地通过一次设计而最终在针对每个平台的控件运行时中共享此设计。

  3. 可视化数据绑定

  新的数据绑定编辑器支持以可视化方式构造和编辑数据绑定,而无需使开发者手工输入XAML代码。

  4. 自动布局

  布局方面的改进包括引入了一个更直观易用的Grid设计器,从而更好地支持自动地调整用户控件的尺寸。

  5. 改进的属性编辑功能

  现在,属性窗口能够以可视化方式创建和编辑画刷资源。更多的相关信息,请参见《WPF设计器》。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奋斗的小壁虎

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值