How to use the Office 2007 Ribbon Control

The lead designer for the ribbon has this video from mix 08.

I really cannot recommend highly enough just how much you should watch this. Especially if you are using a ribbon control in your application. Jensen takes you on a tour of the prototyping the Office team did, consequently you know when to use the ribbon and in what context it is correct to do so. I have come across a lot of developers who have just used the ribbon ‘willy-nilly’ because it was the ‘new kid on the block’, and resulted in creating a really bad application, from a usability point of view. The ribbon solves one key user interface problem, and understanding what this problem is will result in you creating a better application.

There are lessons to be learned here that mean that even if you are not using the ribbon, just the thought process itself is sufficently edifying. It is fascinating just how bad the Office 2003 user interface is, and the scalability that the ribbon creates for your application. One is left beyond doubt just why Office 2007 is far better than the previous version, with an unimpeachable presentation from Jensen.

The WPF Designer for Windows Forms Developers

As one absorbs the new WPF platform, seasoned Windows Forms developers can find it a little frustrating locating identical functionality in WPF. Typical questions may be, how do I create a menu, or how do I use my custom user control?

Thankfully, MSDN has The WPF Designer for Windows Forms Developers which is a collation of equivalent functionality.

Very useful indeed!

Thoughts on the Composite Application Block

The problem the Acropolis team had, was wanting to create a general purpose UI framework. The plan was to make it easy for developers to just implement the business logic, when designing applications for the line of business market. This was the driving force for Acropolis. What they soon found out, was that you need designers and very skilled ones at that, to create the compelling interfaces, something their budget did not allow for.

This whole area is ambiguous, because you can implement the Model View Controller framework in Windows Presentation Foundation (excellent example here), and using Windows Communication Foundation/Windows Workflow Foundation or ‘Workflow Services’ as they are collectively known, you pretty much get the design pattern alluded to beneath;

You just have the MVC client instead of the integrated/composite view.

You can manage the scalability of your smart/web client either on the client, or at the service level. If you use databinding in windows forms, you can databind the same logic to Windows Presentation Foundation. It’s still the same datasets/table adapters and so forth. It becomes immediately apparent that it is folly to use Language Integrated Query on the smart/web client because you cannot easily swop or use windows forms/WPF/Web clients, because your data access logic is inadvertently tightly coupled with the UI. Until Linq is developed to easily allow for usage in service based scenarios, and you do not have to jump through technical hurdles and cross layer obstacles to get it to work, steer well clear of it.
If however your business logic resides in the service/workflow, or n-tier datasets/stored procedures, you can service all three with very minimal effort. I have an application that is smart client (windows forms) based, but the WCF service can easily ‘service’ a web or WPF client (once WPF stops running like a dog with three legs).

One can then concentrate solely on the creation of an attractive user interface.

A digression is that, SQL server 2008 now has intellisense and a host of features that pretty much allow for the composition of SQL queries as you would in a rich IDE like Visual Studio using SQL Server Management Studio. With the present rage in functional programming (concurrent programming) and SQL being a ‘functional language’, I actually enjoy creating my data access on the server, for all the ease Linq gives. SQL is a purer functional language than C#, and I prefer it. With concurrency being focused on, just the fact that SQL is functional, means that if your data access logic resides on a many core server, the concurrent data crunching occurs on the server, rather than in parallel Linq queries (ad-hoc ‘for’ loops) on the client. This results in an extremely well performing application. WPF/Silverlight can then consume the limited resources of the client machine

Windows Presentation Foundation gathering momentum

As a run-of-the-mill business application developer, one usually pays for presentation layer software from DevExpress/Infragistics and so forth.
Money usually goes to attaining the latest and greatest Office mimicking UI, and your developers ‘thrash out’ the necessary business logic. Rudi Grobler has just posted a simply excellent example of creating an Office 2007 Navigation Pane in WPF, using just the standard WPF tab control. Usually one  would have to spend $200-$400 (without the source code) from – to choose two random presentation vendors –
The real beauty here is that one can skin the complete application using the same resource dictionary, which is super-duper-powerful! This allows for a uniform ‘look and feel’ across the application, normally an absolute pain to implement with windows forms.
When you also take into account that Scott Gu recently announced that a major update to WPF is imminent (summer 2008), and that WPF will have a new Ribbon Control and DataGridView out-of-the-box, a personal proclivity is developing toward WPF.

This summers update will address key problems I have highlighted in the past with WPF, primarily poor performance with list type data, and an unavailability of third party controls. If you also ‘factor in’ .NET cold and warm start up times being significantly improved, the WPF ‘stack’ is certainly gathering momentum.