The architecture of WPF spans across both managed code and native code components. However, the public API exposed is only available via managed code. While the majority of WPF is in managed code, the composition engine which renders the WPF applications is a native component. It is named Media Integration Layer (MIL) and resides in milcore.dll
. It interfaces directly with DirectX and provides basic support for 2D and 3D surfaces, timer-controlled manipulation of contents of a surface with a view to exposing animation constructs at a higher level, and compositing the individual elements of a WPF application into a final 3D "scene" that represents the UI of the application and renders it to the screen. The media codecs are also implemented in unmanaged code, and are shipped as windowscodecs.dll
. In the managed world, PresentationCore (presentationcore.dll
) provides a managed wrapper for MIL and implements the core services for WPF, including a property system that is aware of the dependencies between the setters and consumers of the property, a message dispatching system by means of a Dispatcher
object to implement a specialized event system and services which can implement a layout system such as measurement for UI elements. PresentationFrameworpresentationframework.dll
) implements the end-user presentational features, including layouts, time-dependent, story-board based animations, and data binding.
WPF Deployment:
WPF isn't just for building traditional standalone applications. Its deployment model offers both standalone andXAML Browser Applications (XBAP) flavors. The programming model for building either flavor of application is similar.
1. Standalone applications are those that have been locally installed on the computer using software such as ClickOnce or Windows Installer (MSI) and which run on the desktop. Standalone applications are considered full trustand have full access to a computer's resources.
2. XAML Browser Applications (XBAPs) are programs that are hosted inside a web browser. Hosted applications run in a partial trust sandbox environment, and are not given full access to the computer's resources and not all WPF functionality is available. The hosted environment is intended to protect the computer from malicious applications. Starting an XBAP (pronounced "ex-bap") from an HTML page or vice versa is seamless (there is no security or installation prompt). Although one gets the perception of the application running in the browser, it actually runs in an out-of-process executable different from the browser. As of the release of .NET Framework 3.0, XBAPs only run in Internet Explorer. With the release of .NET Framework 3.5 SP1 they also run in Mozilla Firefox using the included XBAP extension.
Windows Presentation Foundation Unleashed by Adam Nathan - Probably the most popular of all the current WPF books out there right now. It is a great book and one of the best introductions to WPF.
Programming WPF by Chris Sells and Ian Griffiths - Also a good and easy read. Good intro and goes a little more in depth than WPF Unleashed.
Pro WPF in C# 2008 by Matthew MacDonald: May not the best intro book as it is huge, but it has a ton of useful information and examples and goes in depth in a lot of topics. It's a kind of reference book.
Online Resources
Lots and lots of samples and tutorials. This is one of my favorite one resources for tutorials -
http://www.codeproject.com/KB/WPF/ -
Microsoft WPF and Windows Forms official public home - http://windowsclient.net/default.aspx
Learning WPF - http://channel9.msdn.com/wiki/default.aspx/ -
WPF Resources - http://wpf-resources.com/default.aspx
Windows Presentation Foundation - http://msdn.microsoft.com/en-us/library/ms754130.aspx
WPF : Getting started - http://msdn.microsoft.com/en-us/library/ms742119.aspx
WPF and Win32 Interoperation Overview - http://msdn.microsoft.com/en-us/library/ms742522.aspx
Download Microsoft healthcare prototype using WPF(Windows Presentation Framework) - http://windowsclient.net/downloads/folders/wpfsamples/entry3754.aspx
An Introduction to Windows Presentation Foundation - http://msdn.microsoft.com/en-us/library/aa480192.aspx
Windows Presentation Foundation
3D Team (web feed)
Text Team (web feed)
XPS Team (web feed)
Peter Antal (web feed)
Leonardo Blanco (web feed)
Tim Cahill (web feed)
Ben Constable (web feed)
Beatriz Costa (web feed)
Pablo Fernicola (web feed)
Henry Hahn (web feed)
Mike Hillberg (web feed)
Karsten Januszewski (web feed)
Prajakta Joshi (web feed)
Ben Kuhn (web feed)
Lauren Lavoie (web feed)
Daniel Lehenbauer (web feed)
Lester Lobo (web feed)
Marcelo Lopez Ruiz (web feed)
Ivo Manolov (web feed)
Adam Nathan (web feed)
Keyvan Nayyeri (web feed)
Rob Relyea (web feed)
Jaime Rodriguez (web feed)
Greg Schechter (web feed)
Ashish Shetty (web feed)
Tim Sneath (web feed)
Mike Swanson (web feed)
Robert Wlodarczyk (web feed)
Feng Yuan (web feed)
Silverlight
Barak Cohen (web feed)
Karen Corby (web feed)
Mike Harsh (web feed)
Adam Kinney (web feed)
Nick Kramer (web feed)
Laurence Moroney (web feed)
Seema Ramchandani (web feed)
Joe Stegman (web feed)
Expression Blend
Expression Team (web feed)
Peter Blois (web feed)
Dante Gagne (web feed)
Alan Gasperini (web feed)
John Gossman (web feed)
Michael Hunter (web feed)
Amir Khella (web feed)
Joe Marini (web feed)
Lingesh Palaniappan (web feed)
Unni Ravindranathan (web feed)
Lutz Roeder (web feed)
Adam Ulrich (web feed)
Adrian Vinca (web feed)
Visual Studio Extensions for WPF
Richard Bailey (web feed)
Chuck Jazdzewski (web feed)
James Nakashima (web feed)
Community Voices
Guillaume Andre (web feed)
Gustavo Arranhado (web feed)
Andrej Benedik (web feed)
Ruurd Boeke (web feed)
Lee Brimelow (web feed)
Eric Burke (web feed)
Chad Campbell (web feed)
Chaz (web feed)
Ryan Dawson (web feed)
Olivier Dewit (web feed)
Nathan Dunlap (web feed)
Rob Eisenberg (web feed)
Michael Emmons (web feed)
Geek Tie Guy (web feed)
Ian Griffiths (web feed)
Grant Hinkson (web feed)
Valentin Iliescu (web feed)
Drew Marsh (web feed)
Simon Middlemiss (web feed)
Charles Petzold (web feed)
Pavan Podila (web feed)
Walt Ritscher (web feed)
Josh Smith (web feed)
Douglas Stockwell (web feed)
Andrew Stopford (web feed)
Thirteen23 (web feed)
ref :
Vincent Sibal's Blog -
http://blogs.msdn.com/vinsibal/archive/2008/05/20/wpf-learning-resources.aspx
Tim Sneath's Blog -
http://blogs.msdn.com/tims/pages/windows-presentation-foundation-blogs.aspx
1. If you are a C or C++ Programmer Needs to Know about C# and the .NET Framework , please download this Free online copy of Charles Petzold's book called '.NET Book Zero' - http://www.charlespetzold.com/dotnet/DotNetBookZero11.pdf
2. According to Petzold, there are two essential books that every C# and .NET programmer should have -
1. Awesomium(WPF WebBrowser)
(Its a mix of the Google Chromium project, (a wrapper called Awesomium) and a WPF) )
What Is Awesomium?
Awesomium is a library that makes it easy for developers to embed the web in their applications. For example, it can be used for:
· Powering an in-game GUI using HTML/JS/CSS
· Rendering a live web-page to a 3D object and interacting with it
· A framework for an advanced, 3D web-browser
· An offscreen renderer for snapshots or recordings of web-pages
· The implementation of in-game advertisting.
· and more!
Links:
http://chriscavanagh.wordpress.com/2009/08/25/a-real-wpf-webbrowser/
Source Code - http://wpfchromium.codeplex.com/
2. Google Books Downloader
http://www.codeplex.com/GoogleBookDownloader
3. .Net3.5 Namespace Poster
http://download.microsoft.com/download/4/a/3/4a3c7c55-84ab-4588-84a4-f96424a7d82d/NET35_Namespaces_Poster_LORES.pdf
4. Debugging in WPF – WPF Disciples tips and tricks
http://wpfdisciples.wordpress.com/2008/04/04/debugging-in-wpf-wpf-disciples-tips-and-tricks/
5. Guidance on Differences Between WPF and Silverlight
http://wpfslguidance.codeplex.com/
6. WPF Localization Guidance Whitepaper
http://wpflocalization.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=29389
7. Printing Contents of WPF RichTextBox
http://blogs.msdn.com/prajakta/archive/2007/01/03/printing-contents-of-wpf-richtextbox.aspx
8. WPF Model-View-ViewModel (MVVM) Toolkit 0.1
The WPF team has just released an MVVM Toolkit which contains an overview and walkthrough of the MVVM pattern, a full Messenger sample app using MVVM, as well as a Visual Studio template for MVVM. The template creates a WPF application with folders for Views, ViewModels, Models, and Commands.
Source Code - http://www.codeplex.com/wpf/Release/ProjectReleases.aspx?ReleaseId=14962
9. TestApi
TestApi is a library of test and utility APIs that enables developers and testers to create automated tests for .NET and Win32 applications. TestApi provides a set of common test building blocks -- data-structures and algorithms -- in a simple, layered, componentized and documented stack.
http://www.codeplex.com/TestApi
10. WPF Futures Downloads
http://www.codeplex.com/wpf/Release/ProjectReleases.aspx?ReleaseId=14962