Visual.AddVisualChild(Visual) 方法   
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
定义两个可视对象之间的父子关系。
protected:
 void AddVisualChild(System::Windows::Media::Visual ^ child);
	protected void AddVisualChild(System.Windows.Media.Visual child);
	member this.AddVisualChild : System.Windows.Media.Visual -> unit
	Protected Sub AddVisualChild (child As Visual)
	参数
- child
 - Visual
 
要添加到父可视对象的子可视对象。
示例
以下示例演示如何为视觉对象子级定义自定义存储要求。 该示例使用 AddVisualChild 和 RemoveVisualChild 方法设置父视觉对象与 child之间的父子关系。 为了正确枚举可视化树,该示例提供了 方法和 VisualChildrenCount 属性的GetVisualChild重写实现。
注意
尽管可以使用 VisualCollection 在视觉对象之间创建父子关系,但当只有一个子级链接到父对象时,提供自己的自定义存储实现会更有效。
// 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;
    }
' 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
    Inherits FrameworkElement
    Private _child As DrawingVisual
    Public Sub New(ByVal drawingVisual As DrawingVisual)
        _child = drawingVisual
        Me.AddVisualChild(_child)
    End Sub
    Public Property Child() As DrawingVisual
        Get
            Return _child
        End Get
        Set(ByVal value As DrawingVisual)
            If _child IsNot value Then
                Me.RemoveVisualChild(_child)
                _child = value
                Me.AddVisualChild(_child)
            End If
        End Set
    End Property
    ' Provide a required override for the VisualChildrenCount property.
    Protected Overrides ReadOnly Property VisualChildrenCount() As Integer
        Get
            Return If(_child Is Nothing, 0, 1)
        End Get
    End Property
    ' Provide a required override for the GetVisualChild method.
    Protected Overrides Function GetVisualChild(ByVal index As Integer) As Visual
        If _child Is Nothing Then
            Throw New ArgumentOutOfRangeException()
        End If
        Return _child
    End Function
	注解
方法 AddVisualChild 设置两个视觉对象之间的父子关系。 当需要对可视子对象的基础存储实现进行更高级别的控制时,必须使用此方法。 VisualCollection 可用作存储子对象的默认实现。