I’m a big believer that WPF is a great UI technology for LOB applications. Yes, there are some shortcomings in the designer experience if you compare the WPF designer to the Windows Forms designer in Visual Studio 2008. Yes, WPF is missing some controls that people expect like a DataGrid and DatePicker, but there are solutions. For example:
- Xceed has a free DataGrid for WPF. There is even a live demo that is a WPF XBAP application
- Kevin’s WPF Bag-o-Tricks has a DatePicker and a slew of other helpful controls
- There are a number of third party controls you can find in the Control Gallery over at http://windowsclient.net.
- Scott Guthrie announced the .NET 3.5 Client Product Roadmap in February. Among other things, he mentions that "Later this year we are also planning to release a number of new controls for WPF. Included in the list we are working on are DataGrid, Ribbon, and Calendar/DatePicker controls."
I’ve updated my WPF Resources list with these links and more.
Personally, I think the benefits of the WPF programming model outweigh the shortcomings of the WPF designer in Visual Studio 2008. Some of the customers I have worked with have told me that once they get over the initial "shock" around the designer (compared to Windows Forms) and the lack of certain controls, they quickly find that they are more productive overall because they are using WPF. This will get better as the Cider team continues to improve the WPF Designer in Visual Studio. Remember that the Windows Forms designer has been around since the release of .NET 1.0! They’ve had a little more time to get all those feature in:).
One of the things I have been chatting about with some of my teammates is that there aren’t enough good samples demonstrating the use of WPF for LOB apps. I’ve been doing some research to see what’s out there. One example is the WPF sample that ships with the CSLA framework from Rockford Lhotka. I used CSLA back in the days of my life as a VB6 developer. Over the years, Rocky has evolved his framework as the .NET Framework has evolved. CSLA is primarily a Business Object framework, but it ships with example user interfaces (including Windows Forms, ASP.NET, and now WPF). The latest version has a WPF sample LOB app. I also came across Karl Shifflet. Karl’s blog has a ton of great info in it about WPF LOB apps including an 11 part series he’s started on the topic:
WPF Business Application Series Part 1 of n – Application Structure, Skinning & Custom ToolBar Button Control
WPF Business Application Series Part 2 – Form Notification Control That Binds To IDataErrorInfo.Error Property
WPF Business Application Series Part 3 of n – Business Object Declarative Programming; How To Implement Object Validation & Logging
I’ve yet to see a sample app that does everything Karl is planning on doing plus show online/offline capability using:
- Client Application Services for Authentication / Authorization (which supports offline scenarios)
- Data Access via a local SQL Compact Edition database using LINQ to SQL or LINQ to Entities
- ADO.NET Sync Services communicating across the wire using WCF to synchronizes with the server database
- Caches lookup data and a necessary subset of the server database relative to the user in the local SQLCE database
- Allows the user to continue working offline, syncing/reconciling changes when they reconnect
I have a bunch of samples that show many of these scenarios, but I have yet to come across a complete solution bringing all of this together in a single app. Have you seen such an example? Are you aware of any other work like Karl & Rocky’s for building LOB WPF apps? Please let me know in the comments section. Thanks!