У меня есть пользовательский DrawingCanvas, который унаследован от Canvas. Когда я добавляю ContentControl в DrawingCanvas со следующим кодом, ничего не отображается.WPF - Добавление ContentControl в пользовательский холст
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 является рисованью и конструктор выше рисует Rect с (0,0) верхней левой точкой и длиной 200 к DrawingContext из GraphicsRectangle. DrawingContainer - это элемент FrameworkElement и имеет один дочерний элемент, который является прямым, заданный конструктором. DrawingContainer реализует методы переопределения GetVisualChild и VisualChildrenCount. Наконец, свойство Content ContentControl установлено в DrawingContainer, чтобы отображать контент DrawingVisual.
Когда я добавляю созданный ContentControl к регулярному холсту, элемент управления отображается правильно. Я думаю, причина в том, что DrawingCanvas не реализует метод ArrangeOverride. Он реализует только метод MeasureOverride. Также DrawingContainer не реализует Measure и Упорядочить методы переопределения. Есть идеи?
Это то, что я искал, но что такое DrawingContainer, GraphicsBase и GraphicsObject. Ни один из них не известен в visualstudio (NET.4). Это некоторые самоопределяет классы. –
Да, они есть. Я создал DrawingContainer, и я взял GraphicsBase, GraphicsObject с http://www.codeproject.com/KB/WPF/WPF_DrawTools.aspx –