Visual.RemoveVisualChild(Visual) Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Quita la relación primario-secundario entre dos objetos visuales.
protected:
void RemoveVisualChild(System::Windows::Media::Visual ^ child);
protected void RemoveVisualChild (System.Windows.Media.Visual child);
member this.RemoveVisualChild : System.Windows.Media.Visual -> unit
Protected Sub RemoveVisualChild (child As Visual)
Parámetros
- child
- Visual
Objeto visual secundario que se va a quitar del objeto visual primario.
Ejemplos
En el ejemplo siguiente se muestra cómo definir los requisitos de almacenamiento personalizados para un elemento secundario visual. En el ejemplo se usan los AddVisualChild métodos y RemoveVisualChild para configurar la relación de elementos primarios y secundarios entre el objeto visual primario y child
. Para que el árbol visual se enumere correctamente, en el ejemplo se proporcionan implementaciones invalidadas del método y VisualChildrenCount la GetVisualChild propiedad .
Nota
Aunque es posible usar VisualCollection para crear relaciones de elementos primarios y secundarios entre objetos visuales, es más eficaz proporcionar su propia implementación de almacenamiento personalizada cuando solo un elemento secundario está vinculado a un elemento primario.
// 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
Comentarios
El RemoveVisualChild método quita la relación de elementos primarios y secundarios entre dos objetos visuales. Este método, junto con el AddVisualChild método , debe usarse cuando necesite un mayor control de bajo nivel sobre la implementación de almacenamiento subyacente de objetos secundarios visuales. VisualCollection se puede usar como implementación predeterminada para almacenar objetos secundarios.