I’ve asked myself this question many times. And if at the beginning, when WPF was just picking up momentum, I would say that this was a straight negative, today I can say the opposite – it really does seem that WPF will slowly replace WinForms, and there is a reason for that.
When WPF came out in 2006 as a part of the .NET Framework, the overall impression was that it is a framework for media applications. The graphics support was pretty neat, the elements on a WPF window were rendered as vector objects, there is XAML that lets the developers build great user interface designs with less effort (no more GDI+ to draw something in the application window). But it was lacking a lot of elements WinForms developers used. When I first started a WPF project, I remember my frustration because of the fact that I wasn’t able to find the Timer control. The toolbox was pretty limited at that time, and I thought that WPF is just an experimental project, or at most a UI layer that will work on top of a WinForms application. And yes, there were WinForms interop capabilities.
Several developers mentioned at that time, that WPF and WinForms are going separate ways and these two sub-frameworks have different “target audiences”. For example, Josh Smith, a WPF MVP, mentioned in this post that WPF will not replace WinForms because of the reason I mentioned above. I admit the fact that back then I was thinking the same way.
However, the situation changed a lot now. Just take a look at the multitude of WPF applications. Seesmic for Windows was made with WPF. Visual Studio 2010 is also heavily based on WPF. These two applications have nothing to do with multimedia, but deliver enhanced user experience by providing new UI capabilities.
Also, looking at the development of WPF and WinForms functionalities, I personally can see that WPF gets more focus than WinForms – the new Windows 7 features (taskbar integration and jumplists) were introduced in WPF, but not in WinForms. Major enhancements were made to the WPF editor, boosting its performance, while no radical changes were made in the WinForms domain (although, now the WinForms controls from the toolbox have version 126.96.36.199 instead of 188.8.131.52). WPF is slowly but firmly occupies the positions that were previously operated by WinForms. Generally, a conclusion I’ve made for myself is that WinForms applications will be mostly developed for legacy machines, that are not able to run WPF applications. As Windows XP (and older) systems will reduce their numbers, WPF will become more and more popular among Windows developers, but this opinion is very subjective.
It doesn’t matter if we as developers want it or not, but WPF will gain more exposure and will become a key part of a larger number of applications. Personally, I really enjoy using WPF and I hope that it will improve even more with time.