The WPF journey
This was the question recently asked by a client when I was presenting a proposal for a new smart client application. I have used Windows Forms to develop smart clients for the last few years. When Microsoft had the “Orcas” release out, I started playing with the WPF bits and have been very excited about the potential of using this new technology to design and develop smart clients for LOB (Line Of Business) applications. The content of this post was inspired by the experience of my journey so far developing applications with WPF.
Like many other software developers & UI designers around the world, I have had a hard time convincing customers and prospects to adopt WPF as the technology for developing new smart client applications or enhancing existing products. MFC had a recent “refresh” release and Windows Forms, with the plethora of third-party controls (ComponentFactory has excellent Windows Forms controls that are available for free!), it is very tempting to stick on with Windows Forms for smart client development. However, when you think of the time few years from now, WPF will have gone through several refreshes, bug fixes and enhancements, making it more robust and stable and ready for enterprise grade application development. To “future-proof” your product, it is essential to give some thought in investing time to learn and adopt WPF as the technology of choice for smart client development. I regularly watch dnrTV shows and had a chance to watch Billy Hollis demonstrate a line of business application developed using WPF. I learnt a lot from the show and was inspired to continue with my journey with WPF (you can download the show from here). In addition, the WPF application showcase provides a list of applications that are developed with WPF. The applications in the showcase highlight the fact that the next generation smart clients will benefit a lot from WPF.
Climbing up the WPF learning curve
Adopting WPF is a challenge as there is a steep learning curve involved, a developer is expected to slip and trip while climbing the curve! I recall a comment from a very successful entrepenuer I recently met in a meeting - “When you think you are falling down a cliff, be as close to the edge as possible and grab hold of any shrubs and branches – try to slow down the speed with which you are falling down. As you get hold of more shrubs and branches, you will eventually slow down and not hit yourself hard at the bottom of the cliff”. As an analogy, while climbing the curve, we can always refer to samples, useful blog posts, resources available from Microsoft and its partners, etc. There are some really good references that people have blogged about elsewhere. I have been using “Pro WPF in C# 2008″ as my “workbook”, while having WPF Unleashed and Programming WPF by my side for digging deeper. Working through a tutorial or workbook may not be the ideal way for every new developer to learn and master WPF, however, it can certainly make the climb up the curve a lot more comfortable.
WPF Training Resources
In addition the books and blogs, there are some really helpful and illustrative resources available for free. Downloading them and viewing them while working through a book or tutorial helps getting a concept or two across. Some training resources that I have used and found really useful are -
- Regularly visit and read through the questions and comments posted in the MSDN WPF forum
- WPF training videos, hands-on labs & virtual labs on Windowsclient.net
- Training videos from contentpresenter.com
- Channel 9 videos
- Microsoft Windows SDK
WPF Code Samples
Sample applications (with source code) developed with WPF and WPF code samples can help a lot in understanding fundamental concepts or illustrate how a feature should be used the right way. I have picked the following from my list of resources I always keep handy while developing a WPF application.
- WPF samples from Microsoft Windows SDK
- VS 2008 & .NET Framework 3.5 Training Kit
- Office UI sample application – An Outlook clone available as a hands-on lab
- Family.Show – a genealogy application from Vertigo
- BabySmash – an AlphaBaby clone by Scott Hanselman
- ChumChase – a FriendFeed client developed in WPF by Christopher Bennage
- Witty – Open-source twitter client developed in WPF
- ThoughtBox – a GTD application by Robby Ingebretsen
I hope you find the links and resources in this post useful in your journey. Good Luck!