For some time we have been using WinForms to create desktop applications. WinForms provides access to the elements of the native Microsoft Windows interface by inserting the existing Windows API into the managed code. WPF, on the other hand, is the new platform for the development of Microsoft Windows applications, based on the .NET Framework. This framework provides an extensible, clear, object-oriented set of classes that allows you to develop rich Windows applications.

Microsoft Windows Presentation Foundation (WPF) is a user interface framework for creating Windows client applications with engaging and intuitive user experiences. It is a subset of the Microsoft .NET Framework and was introduced by Microsoft as part of .NET 3.0. It combines the application user interface, 2D graphics, 3D graphics, documents and multimedia content into a single structure to help developers create rich, interactive applications.

Really What are the pros and cons of both WPF & WinForms ?