The FrameworkElement implementation of VisualChildrenCount always returns either zero or one. Classes that maintain a visual child collection that might exceed one must override both this property and GetVisualChild.
This property is generally used to determine the upper bounds of the current child collection for purposes of implementing the layout overrides (MeasureOverride, ArrangeOverride).
Notes to Inheritors:
If your class supports more than one visual child in a child element collection, override this property to return the count of elements in that collection. You must do this even if the collection object itself returns a count. Element layout logic at the presumes that all elements will return a valid count through their VisualChildrenCount property.GTMT
The following example shows how a custom adorner uses the values declared by a VisualCollection that it maintains for its multiple visual children and reports these values through overrides of VisualChildrenCount and GetVisualChild.