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 可用作存储子对象的默认实现。