У меня есть собственный DrawingCanvas, который унаследован от Canvas. Когда я добавляю ContentControl в DrawingCanvas со следующим кодом, ничего не появляется.
GraphicsRectangle rect = new GraphicsRectangle(0, 0, 200, 200, 5, Colors.Blue);
DrawingContainer host = new DrawingContainer(rect);
ContentControl control = new ContentControl();
control.Width = 200;
control.Height = 200;
DrawingCanvas.SetLeft(control, 100);
DrawingCanvas.SetTop(control, 100);
control.Style = Application.Current.Resources["DesignerItemStyle"] as Style;
control.Content = host;
drawingCanvas.Children.Add(control);
GraphicsRectangle - это DrawingVisual, а конструктор выше рисует объект Rect с (0,0) верхней левой точкой и длиной 200 к DrawingContext of GraphicsRectangle. DrawingContainer - это FrameworkElement, и у него есть один дочерний элемент, который указан выше, с конструктором. DrawingContainer реализует методы переопределения GetVisualChild и VisualChildrenCount. Наконец, свойство Content для ContentControl установлено на DrawingContainer, чтобы иметь возможность отображать содержимое DrawingVisual.
Когда я добавляю созданный ContentControl в обычный Canvas, элемент управления отображается правильно. Я предполагаю, что причина в том, что DrawingCanvas не реализует метод ArrangeOverride. Он реализует только метод MeasureOverride. Также DrawingContainer не реализует меры и
Организовать методы переопределения. Есть идеи?