See the question and my original answer on StackOverflow

For the Add and Remove button to be enabled, you need the collection to implement the non generic IList interface, and, obviously, the property ReadOnly must return false.

Note you need an explicit implementation on the class, just deriving from a class or interface that itself derives from IList (suc as IList<Something>) will not work.

For example, the following is not ok:

public class MyStuffCollection : List<MyStuff>
{
}

and the following is ok:

public class MyStuffCollection : List<MyStuff>, IList
{
}