我有一個從Canvas繼承的自定義DrawingCanvas。當我使用下面的代碼將一個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是DrawingVisual以上構造繪製矩形與(0,0)左上方的點和200長度GraphicsRectangle的的DrawingContext。 DrawingContainer是一個FrameworkElement,它有一個孩子,這個孩子在構造函數給出的上面。 DrawingContainer實現了GetVisualChild和VisualChildrenCount覆蓋方法。最後,ContentControl的Content屬性被設置爲DrawingContainer以能夠顯示DrawingVisual的內容。
當我將創建的ContentControl添加到常規Canvas時,控件顯示正確。我想原因是DrawingCanvas沒有實現ArrangeOverride方法。它只實現MeasureOverride方法。另外DrawingContainer不實現Measure和 排列覆蓋方法。有任何想法嗎?
這就是我一直在尋找,但什麼是DrawingContainer,GraphicsBase和GraphicsObject。 它們都不在visualstudio(NET.4)中已知。 它是一些自定義類。 – 2011-03-09 19:33:09