Those of you who know me know that I am not a windows-client developer. My technology of choice is ASP.NET and other web technologies. So, I am a fish-out-of-water when it comes to providing insight into which Windows desktop-client technology is best suited for a business's software needs. I have dabbled in Silverlight and I have created a few fairly simple WinForms applications, but for the most part I am a newbie to the Windows desktop-client development world.
I have been trying to decide whether to use WPF or WinForms for a major re-write/redesign undertaking of some existing software. And the deadline for completion of this new software is much closer than I would like it to be.
To help me decide, I started out by creating a WPF application to experience using this technology first hand and then I attempted to create the same thing in a WinForms application.
Originally, I was under the impression that WPF was mainly used for eye-candy user interface (UI) design (with it's support for animations and skinning features). I am not a fan of really flashy UI since it these designs usually take up my time doing some silly animation. So, I was a bit skeptical about WPF. But what I found was that this technology is much more than just flashy stuff.
WPF's use of templates and data-binding is incredibly flexible. Business logic validation can be done by the UI without any code in the UI or the code-behind for the page/control/window. The hard things for me had to do with skinning but I think that's mainly because I do not have the appropriate tools to do what I was trying to accomplish (I don't have access to Expressions Blend and was learning how to do things by hand).
When I created the WinForms application I found that I was very constricted by the controls that were available to me. I truly missed the template and binding features in WPF... but at the same time working in WinForms was much more familiar to me even though I am coming from a web-development background.
WinForms seems to be a good choice considering the time constraint, and the fact that most of the team is coming from a VB6 background.
However, WPF is a powerful, flexible, framework that promotes good business logic class design (since the application is driven by binding to these classes). Also, since our application involves embedding live video streaming, graphics, and even has a component that requires objects be dragged around a "desktop" and placed in desired spots... I can see a lot of advantages of using WPF.
Since I do not have a lot of experience using either of these technologies, I am putting the question to you:
Which would you recommend moving to, WPF or WinForms?
-Frinny