How Big is WPF?

One thing people often ask me about WPF is the learning curve - how long will it take for me to be productive, and how long before I know the “whole api”. The sad fact is that knowing the “whole” of WPF is a difficult proposition, due to its size. A lot has been written about the learning curve associated with the XAML programming model and the vector-based retained rendering system, but regardless of these factors WPF is going to have a learning curve due just to its size. WPF is big by any standard - with almost 1600 public types in v3.0 and almost 3600 classes it is approximately the same size as Windows Forms and ASP.NET combined. It spans 3 main assemblies PresentationCore.dll, PresentationFramework.dll and WindowsBase.dll (I’m excluding the Aero, Classic, Luna and Royale “theme” assemblies, and the UI automation and ReachFramework in my calculation of the size since they are not WPF specific). The good news is that you don’t need to know the “whole api” in order to be productive and start using WPF. Here’s a helpful infographic to convey the message:

ASP.NET 2.0 WinForms 2.0 WPF
1098 public types
1551 classes
777 public types
1500 classes
1577 public types
3592 classes