In my application I maintain categories. Each category has some properties which influence the items which are part of the category. Such an item can only reside under one category. The category contains three properties now and determine which properties can be set of an item.
For example: Category A says that it is not possible to copy something. Items that resides under category A must then hide the copy property for the client. In the GUI the copy checkbox must also be invisible.
Items are always of the same type.
What is the best way to implement this?
Well your question is a bit vague, but I’d do such a thing with interfaces. For example you can have an ICanCopy interface. If an object implements this interface you can display the copy checkbox on the UI.
In your example you can also create an ICannotCopy interface, and then hide the controls, but that seems counter-intuitive to me, I’d never model it that way.
EDIT: after some more clarification I’d advice you to look into the decorator pattern: http://www.dofactory.com/Patterns/PatternDecorator.aspx