// Create a host visual derived from the FrameworkElement class.
// This class provides layout, event handling, and container support for
// the child visual object.
public class MyVisualHost : FrameworkElement
{
private DrawingVisual _child;
public MyVisualHost(DrawingVisual drawingVisual)
{
_child = drawingVisual;
this.AddVisualChild(_child);
}
public DrawingVisual Child
{
get
{
return _child;
}
set
{
if (_child != value)
{
this.RemoveVisualChild(_child);
_child = value;
this.AddVisualChild(_child);
}
}
}
// Provide a required override for the VisualChildrenCount property.
protected override int VisualChildrenCount
{
get { return _child == null ? 0 : 1; }
}
// Provide a required override for the GetVisualChild method.
protected override Visual GetVisualChild(int index)
{
if (_child == null)
{
throw new ArgumentOutOfRangeException();
}
return _child;
}