Presentation: Architecting Solutions with WPF at the Sydney Architecture User Group

On Thursday, 25th of February, I gave a talk at the Sydney Architecture User Group. The topic was things architects and lead developers should consider when building applications that use WPF.


.NET 4.0 will mark the fourth release of Windows Presentation Foundation, and the take up continues to rise as the platform matures. For architects, such a new technology means a new set of patterns, approaches and trade-offs that we need to understand when designing solutions. In this session, Paul will lead you on a guided tour of the WPF client application problem space. We will look at patterns for presentation, composition, navigation, and communication needs, as well as resource management, localization, and performance. We will also look at strategies for enforcing UI standards, maximising code leverage, and handling cross-cutting concerns. Bring questions!

More details are at the Sydney Architecture User Group website.

This was a code-free presentation, but here are the slides:

Nice to see so many new and old faces at the event.

A picture of me

Welcome, my name is Paul Stovell. I live in Brisbane and work on Octopus Deploy, an automated deployment tool.

Prior to founding Octopus Deploy, I worked for an investment bank in London building WPF applications, and before that I worked for Readify, an Australian .NET consulting firm. I also worked on a number of open source projects and was an active user group presenter. I was a Microsoft MVP for WPF from 2006 to 2013.

19 Feb 2010

Fourth release?? :)

19 Feb 2010

It would be great if you could post any materials from the presentation after the presentation has been given. Thanks!

19 Feb 2010

@Josh, sure.

.NET 3.0 - WPF 1.0 .NET 3.5 - WPF 2.0 .NET 3.5 SP 1 - WPF 3.0 .NET 4.0 - WPF 4.0

You could debate whether 3.5 SP 1 was really a new version of WPF, but considering how many performance and deployment improvements it had I consider it a pretty major release.

Tim Sneath also called 3.5 SP 1 the third major release.


20 Feb 2010

Yeah they have been pretty liberal with their versioning these days. Yet Windows 7 is a dot 1 release. Go figure. Guess they "saved or created" 4 versions of WPF. :)

02 Mar 2010

Good to see you again there Paul. Sorry I had to leave early, but it was a good preso. I think a lot of people would have taken a lot from it.

25 Mar 2010

Hi Paul,

I was wondering what you meant by Datagrids are evil? With the slide saying "Code Behind isn’t Evil (DataGrids are)"

Regards, Joe

26 Mar 2010

Hi Joe,

This probably deserves a longer post, but to summarize: in Windows Forms if you have a single object, you can bind the properties to TextBoxes, CheckBoxes, and many other controls. But if you had a list of objects, you had few choices - a ListView or a DataGridView. There was never an out-of-the-box repeater control.

I think this constraint led a lot of applications to go "data grid crazy". That is, applications where 90% of the views are editable data grids.

Data grids present the user with lots of data, but they don't do a good job in helping the user to understand the data. People say "oh, but they can sort, and group". As a user, to me this says that the developers either didn't know anything about my data, or they didn't care enough, to consider how I would use it and thus sort it and group it for me. If the UI is designed well I should rarely need to manually sort.

Editable data grids are worse. It's great that they enable bulk editing - but that's rare. Most commonly what happens is that while on the phone to a customer, a user has to edit this grid, edit that grid, find that grid, add a row to that grid, and so on. It would be better for the UX designers to understand the processes users follow and provide UI's that are inductive and guide users through that, without the need for editable data grids.

So it's not that grids are inherently evil or that I would never use them. And sometimes a 90% data grid UI could make sense. But on average, I'd say they do the user a dis-service. There's a perception among many new WPF teams that the very first decision they have to make is which third party data grid control to use. The slide was intended just to challenge that.