Visual.AddVisualChild(Visual) 方法

定义

定义两个可视对象之间的父子关系。

C#
protected void AddVisualChild(System.Windows.Media.Visual child);

参数

child
Visual

要添加到父可视对象的子可视对象。

示例

以下示例演示如何为视觉对象子级定义自定义存储要求。 该示例使用 AddVisualChildRemoveVisualChild 方法设置父视觉对象与 child之间的父子关系。 为了正确枚举可视化树,该示例提供了 方法和 VisualChildrenCount 属性的GetVisualChild重写实现。

备注

尽管可以使用 VisualCollection 在视觉对象之间创建父子关系,但当只有一个子级链接到父对象时,提供自己的自定义存储实现会更有效。

C#
// 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;
    }

注解

方法 AddVisualChild 设置两个视觉对象之间的父子关系。 当需要对可视子对象的基础存储实现进行更高级别的控制时,必须使用此方法。 VisualCollection 可用作存储子对象的默认实现。

适用于

产品 版本
.NET Framework 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9, 10

另请参阅