WPF는 다음과 같은 내용들이 변경되거나 개선되었다고 합니다. New Controls Visual State Manager Touch and Manipulation Graphics and Animations Text Binding XAML Browser Applications WPF and Windows WPF and Silverlight Designer
이번에 새롭게 추가된 컨트롤이라기 보다는 WPF 3.5 SP1 + WPF Toolkit에 포함되었던 내용이 정식으로 포함된 것이라고 할 수 있습니다. DataGrid Calendar DatePicker
Visual State Manager ControlTemplate안에서 Visual의 상태가 바뀌는 것을 지원하기 위해서 제공되는 VisualStateManage와 이를 지원하는 클래스들이 포함되었습니다. 또 Expression Blend에서 정의된 컨트롤과 외권을 사용할 수 있게 되었다고 합니다. Touch and Manipulation
터치를 위한 기능들이 개선되었습니다. UIElement와 UIElement3D 그리고 CotentElement 클래스 등에서 모두 터치와 관련된 이벤트에 대한 개선이 있었습니다. 몇가지 그래픽과 애니메이션과 관련된 변화들 입니다.
When an object edge falls in the middle of a pixel device, the DPI-independent graphics system can create rendering artifacts, such as blurry or semi-transparent edges. Previous versions of WPF included pixel snapping to help handle this case. Silverlight 2 introduced layout rounding, which is another way to move elements so that edges fall on whole pixel boundaries. WPF now supports layout rounding with the UseLayoutRounding attached property on FrameworkElement.
By using the new BitmapCache and BitmapCacheBrush classes, you can cache a complex part of the visual tree as a bitmap and greatly improve rendering time. The bitmap remains responsive to user input, such as mouse clicks, and you can paint it onto other elements just like any brush.
Pixel Shader 3 Support
WPF 4 builds on top of the ShaderEffect support introduced in WPF 3.5 SP1 by allowing applications to now write effects by using Pixel Shader (PS) version 3.0. The PS 3.0 shader model is more sophisticated than PS 2.0, which allows for even more effects on supported hardware.
You can enhance animations with easing functions, which give you additional control over the behavior of animations. For example, you can apply an ElasticEase to an animation to give the animation a springy behavior. For more information, see the easing types in the System.Windows.Media.Animation namespace.
Text와 관련한 몇 가지 변화 사항입니다.
New Text Rendering Stack
The WPF text rendering stack has been completely replaced. This change brings improvements to text rendering configurability, clarity, and support for international languages. The new text stack now supports explicitly selecting aliased, grayscale, or ClearType rendering modes. The text stack now supports display-optimized character layout, to produce text with sharpness comparable to Win32/GDI text. The new text stack allows optimizing text hinting and snapping for either animated or static text. The new text stack also supports fonts with embedded bitmaps to be substituted for smaller font sizes, allowing many East Asian fonts to render with sharpness comparable to Win32/GDI text.
Selection and Caret Customization
You can now specify the brush that paints the selection and caret for input and reading controls, such as TextBoxRichTextBox, and FlowDocumentReader. There are two new properties on TextBoxBase:
SelectionBrush allows you to create a brush for highlighting selected text.
CaretBrush allows you to change the brush that paints the cursor.
Binding과 관련해서는 많은 변화가 있었습니다.
Various changes and enhancements have been made related to binding.
Bind to commands on InputBinding.
You can bind the Command property of an InputBinding class to an instance that is defined in code. The following properties are dependency properties, so that they can be targets of bindings:
The InputBinding, MouseBinding, and KeyBinding classes receive data context from the owning FrameworkElement.
Bind to Dynamic Objects
WPF supports data binding to objects that implement IDynamicMetaObjectProvider. For example, if you create a dynamic object that inherits from DynamicObject in code, you can use markup extension to bind to the object in XAML. For more information, see the Binding Sources Overview.
Bindable Text Run
Run.Text is now a dependency property. The main advantage is that it now supports one-way bindings. It also supports other features of dependency properties, such as styling and templating.
XAML Browser Applications 다시 말해서 XBAP도 개선이 되었다고는 하는데 제 개인적으로는 XBAP의 실용성에 대해서는 의구심이 들기는 합니다.
Two features have been added to XAML browser applications (XBAPs).
HTML-XBAP Script Interop
You can now communicate with the Web page containing the XBAP when the application is hosted in a HTML frame. The XBAP can get deep access to the HTML DOM and can handle DOM events. For more information see BrowserInteropHelper.HostScript.
Full-Trust XBAP Deployment
If your XBAP requires full trust, the user will now automatically receive the standard ClickOnce elevation prompt when they install the application from the intranet or one of their browser's trusted sites.
For more information on both these features, see WPF XAML Browser Applications Overview.
Windows 7과 관련한 변화입니다. 이 역시도 새롭게 추가된 것이라기 보다는 흩어져 있던 API들을 잘 묶은 정도의 변화라고 볼 수 있습니다. The Windows 7 taskbar provides enhanced functionality that enables you to use the taskbar button to communicate status to a user and expose common tasks. New types in the System.Windows.Shell namespace provide managed wrappers for functionality in the Windows 7 taskbar and manages the data passed to the Windows shell. For example, the JumpList type allows you to work with Jump Lists and the TaskbarItemInfo type allows you to work with taskbar thumbnails.
WPF dialog boxes on Windows 7 and Windows Vista now support the look and feel of the Windows 7 and Windows Vista style, which includes custom places. For more information, see the FileDialogCustomPlace class.
WPF가 개선되었긴 하지만 4.0버전에서 새롭게 무엇인가 출현한 것은 없다고 보셔도 무방할 만큼 무난한 변화가 있었습니다. 자세한 내용은 http://msdn.microsoft.com/library/bb613588.aspx 를 참조해 보시기 바랍니다.
개발자를 위한 IT블로그 영욱닷컴(http://www.YoungWook.com)