Если вы хотите программно добавлять дочерние элементы в производный Canvas, вы можете просто сделать это следующим образом:
Rectangle rect = new Rectangle
{
Width = 200,
Height = 200,
Stroke = Brushes.Red,
StrokeThickness = 5,
Fill = Brushes.Black
};
Canvas.SetLeft(rect, ...);
Canvas.SetTop(rect, ...);
Children.Add(rect);
Нет необходимости переходить на уровень Visual и переопределять VisualChildrenCount
и GetVisualChild
.
Если по какой-либо другой причине вам необходимо использовать Visuals, тогда нет необходимости использовать Canvas. Вы можете получить от UIElement
или FrameworkElement
.