WPF Learning Resources(Books, Online Resources including Blogs)

The Windows Presentation Foundation (or WPF) is a graphical subsystem for rendering user interfaces in Windows-based applications. WPF, initially released as part of .NET Framework 3.0, is another step in Microsoft’s evolving rich client strategy. Designed to remove dependencies on the aging GDI subsystem, WPF is built on DirectX, which provides hardware acceleration and enables modern UI features like transparency, gradients and transforms. WPF provides a consistent programming model for building applications and provides a clear separation between the user interface and the business logic.

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. PresentationFramework (presentationframework.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.

Books

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

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

Patterns For Building Composite Applications With WPF -
Blogs
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

Note:

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 -

The first book is C# Programming Language Spec by Anders Hejlsberg, Scott Wiltamuth, and Peter Golde. Downloadable versions of The C# Programming Language are available under the title C# Language Specification from this Web page - http://msdn2.microsoft.com/en-us/vcsharp/aa336809.aspx

The second book is a .NET book is Jeffrey Richter‘s CLR via C# (Microsoft Press, 2006), which is actually the second edition of Applied Microsoft .NET Framework Programming.

Miscellaneous Links:

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