I'm working on an application which purpose is to edit data from a specific domain. The domain has a concept of default/inherited values.

For instance:

  • Let say I have a control with an edit box to edit an item's property named Index which is an integer.
  • I can select item A and enter 10
  • I can select item B and enter 15

That is easy. But let say item B 'inherits' from item A.

  • When I select item B, the edit box should not be empty and show me the value inherited from the parent so 10.
  • I can still modify the value and put 15

That OK. But let say I don't want 15 in item B, but the value of item A

  • show the inherited value in gray text and the overridden value in black text. Erasing the overridden value set back the inherited value in gray text.

Sounds good! Maybe the user will see the gray text as a disabled control, but he should get used to it and its a pattern that is frequently seen.

But ... what is the item's property is specified with a combobox ...

  • The combo of item B is showing the value of item A.
  • At the side of the combo, there is a square that is blank.
  • If the user overrides the value from the parent, the square appears black.
  • When clicking on the square, the is a contextual menu with a command to reset to the default value.

I think that Microsoft Blend is using this concept.

It also work with other control as checkbox, color chooser, etc.

Anyone has another alternative?


  • Is a blank entry a valid entry for B if you have selected B? If not, then treat empty fields as implying inheritance.
    – Erics
    Commented Oct 17, 2011 at 9:15

3 Answers 3


You need to provide an option to explicitly inherit the value from item A. If item A has a value of 15, and item B shows this value, all is good. Then the user overrides it, setting the value to 10 and breaking the connection between items A and B. If the user then decides to go back to 15, it's no longer the same 15, and if I change the value of A, it won't affect item B. The user needs to be able to say "Value of A" when editing B.

You could try doing it with syntax ("[Label_of_A]"), but it's only good for very advanced users who also have expert knowledge of the system.

The easier way is to have a control that toggles item B between the states of inheriting a value from A and having its own value, probably a checkbox.


How about adding a label to the value, like:

Value: 14 (inherited)


Value: 14 (default)


First, make sure fields containing inherited values is styled a little differently (probably not as greyed, as that can signify a disabled field). I've seen forms which use colored text or a colored background to signify this. I think at least one browser does this, or used to, whenever it auto-filled any form fields. You can also attach the "(default)" label as Assaf suggests.

Then, have the inherited fields display the inherited value, but upon being entered then appear empty (similar to how many search fields display the text "search" until you click into them).

When the user then exits that field without any detail being entered the field would revert to displaying the inherited value.

This way the user is shown (and hopefully taught) that "a blank field will inherit values".

This does assume that a blank entry isn't actually a valid entry. For number fields, like your example, the user can at least enter "0" if they don't want an actual value there.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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