Possible Duplicate:
Don’t hide or disable menu items?

I think applications should explain why an option of clickable icon is greyed-out i.e. not selectable or not active. For example a question mark next to it saying "Why?!" Otherwise the user is left guessing.

Here's an example scenario that could do with such an explaination: https://productforums.google.com/forum/?fromgroups=#!topic/gmail/jXEgc1rRJxE

Has this not occured to user interface designers by now? If so, why not?

  • 3
    Of course the thought has occured - see the top two answers on Don't hide or disable menu items? and also Hover over a disabled item to know why it's disabled. What do you think? - thus suggesting this is a duplicate question. Commented Oct 24, 2012 at 11:19
  • are you talking about question mark next the first post? If you hover over it it will explain what it is.
    – Igor-G
    Commented Oct 24, 2012 at 11:25
  • Please include a screenshot highlighting your scenario - it's much more helpful than requesting that all your readers jump through hoops like log in to an account on google to read a message to find out that they are talking about someone else having done a particular contacts import action in gmail and want to email all at once. You'll be much more likely to get a response if readers can see what you're talking about straight away and in context of your question. Btw - you're not the Rob I know :-) Commented Oct 24, 2012 at 11:31
  • +1 @Roger Attrill - Fair point about the duplicate question - looking at those they do look like just what I'm answering - with some good answers. Vote to close if you wish. Thanks for your time. Commented Oct 24, 2012 at 12:57
  • (Before asking this question, I did do a search, for "greyed-out" and "grayed-out" which showed nothing but in hindsight I should have widened my search to other terms to pick up the questions you mention Roger. Thanks) Commented Oct 24, 2012 at 13:00

2 Answers 2


It's generally due to the separation of presentation and logic. Particularly in the MVVM world. It's certainly doable though.

Let's take a simple MVVM example (Assume C# and WPF here, but this should be general purpose)

In my application I have a Paste button, which is bound to a PasteCommand in my view model. PasteCommand has a CanExecute handler that returns false if there is either no data on the clipboard, or the data on the clipboard is in a format it can't use.

Now all your CanExecute handler can return is a boolean. It's got no way of saying why in that method.

Since your command doesn't know anything about the view, it can't just go ahead and set the tooltip text of the button to something helpful. That tooltip text has to be bound to a property in the view model.

Suddenly this all stops working, because it means that you need a property in your view model for every control that you want to display a reason why it's disabled. Messy and unmaintainable.

Now there are ways around this, if you had a class that inherited from ICommand which had a FailureReason property and used that for your PasteCommand - you could then bind the tooltip text of the disabled control to that value (but only do so when it's disabled, which you can do with WPF) - although technically this breaks some design rules as the view then becomes dependent on your implementation of the viewmodel and the custom command class.

  • Thanks PhonicUK for your answer, though my question was not intended (sorry) for a programming-based answer, just the general concept as to why a interface button is disabled/greyed out and perhaps the UI should show it. Commented Oct 24, 2012 at 12:59

Greying out unavailable menu items goes back at least to the 1980s Apple Mac Interface.

It's a convention, in the same way that an X is used to close Windows. And interfaces often do need a bit of 'instruction' to learn these conventions.

  • thanks - but my question goes a bit further to ask that perhaps a UI should explain why an item is unavailable. Roger provides existing questions that satisfy my question. Commented Oct 24, 2012 at 13:01

Not the answer you're looking for? Browse other questions tagged or ask your own question.