Introduction
Windows Presentation Foundation (WPF) is a framework to create stunning GUI applications. It is so popular in .NET Community that nearly 10% of all newly created projects are WPF as described
here on MSDN.
But when I searched for its major versions and enhancements respective version brought, I could not find concise resource. Unfortunately its
Wikipedia page looks like not up to date. Even on MSDN there is no webpage providing such summary. So I collected information from various resources and presented in this article. I have provided links to those resources wherever needed and more in
References section of this article as those would be pointers for further study. My humble thanks to authors of those great blogs / articles.
Note: This article for intermediate/advance level who are well versed with WPF. For introduction to WPF, please visit to
MSDN Site and
Wikipedia.
Contents
This article is having following sections:
WPF Versions and Major Enhancements
Following table gives a concise view of WPF Versions, timeline and major enhancements:
WPF Version |
Release (YYYY-MM) |
.NET Version |
Visual Studio Version |
Major Features |
3.0 |
2006-11 |
3.0 |
N/A |
Initial Release.
WPF development can be done with VS 2005 (released in Nov 2005) too with few additions as described here. |
3.5 |
2007-11 |
3.5 |
VS 2008 |
Changes and improvements in:
Application model, data binding, controls, documents, annotations, and 3-D UI elements. |
3.5 SP1 |
2008-08 |
3.5 SP1 |
N/A |
Native splash screen support, New WebBrowser control, DirectX pixel shader support.
Faster startup time and improved performance for Bitmap effects. |
4.0 |
2010-04 |
4.0 |
VS 2010 |
New controls: Calendar, DataGrid, and DatePicker.
Multi-Touch and Manipulation |
4.5 |
2012-08 |
4.5 |
VS 2012 |
New Ribbon control
New INotifyDataErrorInfo interface |
4.5.1 |
2013-10 |
4.5.1 |
VS 2013 |
No Major Change |
4.5.2 |
2014-05 |
4.5.2 |
N/A |
No Major Change |
4.6 |
2015-07 |
4.6 |
VS 2015 |
Transparent child window support
HDPI and Touch improvements |
Path for WPF Version Assemblies
The reference assemblies can be found at folder path:
“C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework”.
There you will get folders for each .NET framework version installed from .NET 3.5 onwards. In each folder, you will get
PresentationCore.dll and
PresentationFramework.dll which comes with respective .NET Version. You can check the difference in their build versions by looking into “Details” tab of properties windows for any DLL. For 3.0 and Silverlight, refer to path:
"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework".
For more information, please have a look at
this link.
WPF 3 - Initial Release
The journey of WPF formally started with its first released in 2006. As WPF was released as a part of .NET Framework 3.0 so first version of WPF is also called WPF 3.0. It was having code-name as "Avalon" while its development. Differentiating basic features of WPF are:
- Employing DirectX: In order to obtain GPU-accelerated rendering, WPF renders and presents graphics through the DirectX pipeline (rather than relying on the older GDI subsystem). DirectX allows to offload graphics tasks to the GPU. This frees up the CPU to do other work and thus increases app performance.
- Declarative UI through XAML: Extensible Application Markup Language (XAML) is an XML-based markup language. XAML is the language behind the visual presentation of WPF applications.
- Dependency Properties: WPF introduces a new type of property called a dependency property. A dependency property depends on multiple providers for determining its value at any point in time. The value of a DependencyProperty is resolved dynamically. Major advantages of dependency properties are reduced memory footprint, value inheritance and change notification.
- Data binding: Data binding is the process that establishes a connection between the application UI and the business logic. Using data binding we can take data from almost any property of any object and bind it to almost any other dependency property of another object.
- Templates and Styles: WPF gives us an extensibility model based on templates and styles, allowing us to perform complex changes and redefinitions of the visual appearance of a control, without having to create a new one. You can change the structure and appearance of a control by modifying the ControlTemplate of that control. A Style object is a collection of values representing properties for the specified control.
WPF 3.5 Enhancements
- Improvements to the application model:
- XBAPs can now run in Firefox.
- Cookies can be shared between XBAPs and Web applications from the same site of origin.
- Improved XAML IntelliSense experience for higher productivity and Expanded localization support.
- Comprehensive add-in support for supporting nonvisual and visual add-ins from standalone applications and XAML browser applications (XBAPs).
- Ability to cache images: You now have the ability to cache images that are downloaded over HTTP to the local Microsoft Internet Explorer temporary file cache, so that subsequent requests for the image come from local disk, rather than the Internet. Depending on the sizes of your images, this can be a significant network performance improvement.
- Interactive 3-D Graphics: new features have been added to the 3-D object model:
- Input, Focus, and Eventing Support in 3-D.
- Interactive 2-D Content on 3-D.
- New Transformation Services.
- Enhanced Data Binding:
- A new debugging mechanism makes it easier to debug data bindings.
- The data model enables validation on the business layer by providing support for the IDataErrorInfo interface. In addition, the validation model now supports using property syntax to set validation rules.
- The data binding model now supports LINQ and XLINQ.
- Text Improvements in Controls: Enhancements in RichTextBox and TextBoxBase.
- Documents Improvement: FlowDocumentPageViewer, FlowDocumentScrollViewer, and FlowDocumentReader each have a new public property called Selection. The property gets the TextSelection that represents the selected content in the document.
- Annotations Improvement: The annotations framework now exposes the capabilities for matching annotations with the corresponding annotated objects. A new interface, IAnchorInfo, has been added. In addition, a new method, GetAnchorInfo, which returns an IAnchorInfo object, has been added to the AnnotationHelper class.
For more information, please have a look at
What's New in WPF Version 3.5.
WPF 3.5 SP1 Enhancements
- Improved performance for Bitmap effects and faster startup.
- New WebBrowser control.
- Additional functionality includes better support for line of business applications, native splash screen support, DirectX pixel shader support.
For more information, please have a look at
What's New in the .NET Framework Version 3.5 SP1.
WPF 4 Enhancements
- New controls, including Calendar, DataGrid, and DatePicker.
- Multi Touch and Manipulation enables you to create applications that receive input from multiple touches simultaneously on Windows 7.
- Graphics and animation supports layout rounding, Pixel Shader version 3.0, cached composition, and easing functions.
- New types in the System.Windows.Shell namespace enable you to communicate with the Windows 7 taskbar and pass data to the Windows shell.
- VisualStateManager supports changing states of controls.
- Text has improved text rendering and supports customizing the caret color and selection color in text boxes.
- Binding is supported on the Command property of an InputBinding, dynamic objects, and the Text property.
- XAML browser applications (XBAPs) support communication with the Web page and support full-trust deployment.
For more information, please have a look at
What's New in WPF Version 4.
WPF 4.5 Enhancements
- New Ribbon control, which enables you to implement a ribbon user interface that hosts a Quick Access Toolbar, Application Menu, and tabs.
- The new INotifyDataErrorInfo interface, which supports synchronous and asynchronous data validation.
- Ability to set the amount of time that should elapse between property changes and data source updates .
- Improved support for implementing weak event patterns. Also, events can now accept markup extensions.
- New features for the VirtualizingPanel and Dispatcher classes.
- Data binding to static properties, data binding to custom types that implement the ICustomTypeProvider interface, and retrieval of data binding information from a binding expression.
- Ability to check whether the data context for an item container is disconnected.
- Improved performance when displaying large sets of grouped data, and by accessing collections on non-UI threads.
For more information, please have a look at
What's New in .NET 4.5.
WPF 4.6 Enhancements
- HDPI improvements: HDPI support in WPF is now better in the .NET Framework 4.6. Changes have been made to layout rounding to reduce instances of clipping in controls with borders.
- Transparent child window support: WPF in the .NET Framework 4.6 supports transparent child windows in Windows 8.1 and above. This allows you to create non-rectangular and transparent child windows in your top-level windows. You can enable this feature by setting the HwndSourceParameters.UsesPerPixelTransparency property to true.
- Touch Improvements: In older version, touch produces unpredictable behavior have been addressed in the .NET Framework 4.6. The double tap threshold for Windows Store applications and WPF applications is now the same in Windows 8.1 and above.
For more information, please have a look at
What's New in .NET 4.6.
Conclusion
I hope this article will help you to have a quick look and understand the differences between various versions of WPF. Your queries and comments are most welcome for improvements. Thanks.
References
[1] The Future of WPF Beyond the .NET Framework 4.6
[2] Suspect no planning of investment in WPF (in 2014)
[3] WPF in .NET 4.6
[4] The Evolution of WPF by Adam Nathan
[5] .NET Framework version history