#234 – Getting a DrawingVisual Object Rendered in a Window
March 3, 2011 Leave a comment
A class deriving from DrawingVisual that draws one or more 2D objects needs to be hosted in another object in order to render the DrawingVisual object in a window or a page.
You can host the lower level control in either an UIElement or a FrameworkElement. UIElement has basic support for layout and is the minimum functionality required in order to host a control within a Window (or a container control).
Here’s an example of overriding FrameworkElement to host our new control.
public class EllAndRectHost : FrameworkElement
{
private EllipseAndRectangle _ellAndRect = new EllipseAndRectangle();
// EllipseAndRectangle instance is our only visual child
protected override Visual GetVisualChild(int index)
{
return _ellAndRect;
}
protected override int VisualChildrenCount
{
get
{
return 1;
}
}
}
We create a FrameworkElement with one visual child, overriding GetVisualChild and VisualChildrenCount.
Now we can use this new element directly in XAML:
<local:EllAndRectHost Margin="30"/>
