7 years ago, when we were at a decision point to choose a technology for an UI layer of a new desktop application, we’ve selected the WPF. The options where WinForms vs WPF, and it looked like WPF is the new but already widely used and promising framework with bright future while WinForms is something old which will be abandoned by everyone in favor of WPF. And we selected the WPF without thinking a lot – because you do not select an old deprecated technology if there is a new technology on the market which comes to replace the old.
But today IMHO the situation is different. Microsoft does not invest in WPF any more, Silverlight is dead, and WinForms is still supported and improved.
Some links on that issue:
Is WPF dead: the present and future of WPF
WPF vs. Windows Forms 2015
WPF vs. WinForms
So, today it is time to ask questions again and think about WinForms vs WPF again.
WinForms is a good old straight-forward reliable framework with many good controls and good performance. WPF provides many possibilities for better user experience, media presentation, astonishing visual effects – but do we need them all, if we are developing a LOB application?
Today I personally would choose WPF only if:
- I need an outstanding customized rich UI with graphics, animations, media, special effects, sounds etc. and I will have a dedicated Expression Blend designer in my project.
- I need an application with UI which resembles Windows 10 or android-style UI with single page and moving tiles/slides etc.
- I have experienced WPF/MVVM developers available for the project.
In all other cases I would choose WinForms. It is completely fine for LOB application:
- It is simple and intuitive. The learning curve good. The development is fast.
- Mature and reliable.
- Great performance (You may always say it is WPF application by worse rendering performance, comparing to WinForms)
- There are great WinForms controls like DevExpress, which let you create a great-looking application which will be intuitive for Windows user.
P.S.: I had a discussion with my friend and colleague AlexZ on that issue (thanks Shura!!!) and he disagrees with me and thinks that WPF is the right choice. Here are some links in favor of WPF he gave me, which show that WPF is not abandoned by MS:
The Future of WPF Beyond the .NET Framework 4.6 The Roadmap for WPF PRISM 6 FOR UWP, PRISM 6 FOR WPF UPDATE + A NEW LOGO TO ADORN ITS NEW HOME MVVM Light Toolkit
So, the choices are hard.
Choose wisely. But in any case you will need to rewrite your UI for a new technology after about 5 years.