From your sample code I can see that you have a property called Children which actually hides the Children property of the GanttTask, but the GanttView doesn't know about it and because of that it ignores it.
There is no easy to implement alternative of your approach as the GanttTask class doesn't support its Children replaced to be changed - it creates its own in its constructor and it cannot be changed later.
I can suggest you two different approaches which have their positives and negatives depending on your needs:
1. If you need just to add functionality to your tasks collection (methods) and you don't need to add any data to it (properties and fields), I would suggest you to create some extension methods
instead of inheriting the collection. This might also remove the need of inheriting the GanttTask class.
2. As the GanttView also doesn't know about the GanttTask class, but only about the interfaces - IGanttTask, IMilestone, ISummary, IEditableHierarchical, IDependant, implemented by the GanttTask class, you could create your own implementation, which doesn't inherit from the GanttTask class.
The second approach is more complicated, but allows you greater flexibility.