.net – Using Ribbon as tab control


I would like to create application with ribbon interface that looks and behaves like this:

  • application have one main form with ribbon
  • ribbon has multiple tabs
  • when user switches tab on ribbon, panel below ribbon changes and displays content related to ribbon panel. That way, ribbon tab acts as if it is tab over whole window.

For example, ribbon have two tabs: people and tasks. When current ribbon panel is "people", below ribbon is displayed grid with people data. Ribbon contains command for manipulating people data. When user switches to "tasks" tab on ribbon, application should display form with tasks below ribbon.

Question is can ribbon be used in this scenario?

I read "OFFICE FLUENTâ„¢ USER INTERFACE DESIGN GUIDELINES" that describe what you can and
cannot do with ribbon, but I could not find anything about this.

Best Solution

TLDR: I think it fits to your application concept, but there has to be a clear distinction between the people and tasks functions to make it work!

Though Scott has a point that it might be somewhat in contrast to what Microsoft intended to use the Ribbon for, it think the Ribbon also fits to this kind of use. Since if you wanted to have a conventional tab like Michael suggests you would need buttons to switch between the windows or tasks. By using the Ribbon you directly link the controlling functions/buttons with the task' tab, making it easier to learn what buttons are linked to what task. Buttons that are used for the whole app can be integrated into the Office button (the large Office logo in the top left corner), which is actually exactly what Microsoft does.

We are currently implementing a Ribbon-like toolbar as well, so probably I'm not entirely objective. However I tend to think the Ribbon works quite simple and enables users to easily discover buttons. One side-note: this could also be achieved by using large logo's and dropdown gallery's, it's just easy that most Ribbon packages available have these things implemented, so no need to code it yourself (unless you can very easily)!