Wpf – Does Microsoft Office 2010 make use of WPF or is it plain old MFC

mfcmfc-feature-packoffice-2010wpf

I have been using WPF for some time now and I am trying to reproduce some of the nifty UI features of their office suite. Although very easy in WPF, I am wondering how it could be done using MFC feature packs (I might have to use it instead, since my company has not yet approved the use of WPF). Since the Fluent UI was introduced with Office 2007, I am wondering if Microsoft actually uses WPF in anything else than VS2010 or Expression Blend and particularly in Office 2010.
I hope that this question is not off topic.

Best Answer

Office 2010 does not use WPF. In fact, it doesn't use MFC either. Office has traditionally used a custom UI toolkit, and this was true even before the Ribbon came into being. However, you only need one major first-party application to secure the viability of WPF as a UI platform. This is especially true when that application happens to be Visual Studio, since tens of thousands of Microsoft employees use Visual Studio every day.

But that doesn't mean that WPF is the best UI technology to use with the Ribbon. The Microsoft WPF Ribbon handles a lot of corner cases incorrectly, as do all the major commercial managed-code Ribbons that I've tested (WPF or Winforms). It is very hard to duplicate the Office Ribbon -- there are a lot of subtleties that are difficult to anticipate and only turn up when users run into corner cases.

The Office Ribbon took over 200 man-years of work and was exercised by tens of thousands of beta testers. (Jensen Harris estimated at UX09 that the Office UI team numbered some 15 PMs, 30 developers, 30 testers, along with half a dozen designers and UI researchers.) It's the best-tested Ribbon out there, but unfortunately it's one that developers outside Microsoft can't use.

The second most reliable ribbon framework is probably the Windows 7 ribbon, which is used by Paint and WordPad. This one is available in the Windows 7 SDK, and has been backported to Vista. Native code and GDI, so it's targeted towards C++ developers. Note that it's also not tied into MFC.

Related Topic