ContainerVisual.GetVisualChild(Int32) Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Retorna um Visual filho especificado para o ContainerVisual pai.
protected:
override System::Windows::Media::Visual ^ GetVisualChild(int index);
protected override sealed System.Windows.Media.Visual GetVisualChild (int index);
override this.GetVisualChild : int -> System.Windows.Media.Visual
Protected Overrides NotOverridable Function GetVisualChild (index As Integer) As Visual
Parâmetros
- index
- Int32
Um inteiro com sinal de 32 bits que representa o valor do índice do Visual filho. O valor de index
deve estar entre 0 e VisualChildrenCount -1.
Retornos
O Visual filho.
Exemplos
O exemplo a seguir mostra como criar um ContainerVisual objeto que é usado como pai para dois DrawingVisual objetos. Objetos que são adicionados ao ContainerVisual objeto devem ser adicionados na ordem z inversa (de baixo para cima) para garantir que estão sendo renderizados na ordem de desenho correta. Para que a árvore visual seja enumerada corretamente, o exemplo fornece implementações substituídas do GetVisualChild método e VisualChildrenCount da propriedade.
// Create a host visual derived from the FrameworkElement class.
// This class provides layout, event handling, and container support for
// the child visual objects.
public class MyContainerVisualHost : FrameworkElement
{
private ContainerVisual _containerVisual;
public MyContainerVisualHost(DrawingVisual border, DrawingVisual text)
{
// Create a ContainerVisual to hold DrawingVisual children.
_containerVisual = new ContainerVisual();
// Add children to ContainerVisual in reverse z-order (bottom to top).
_containerVisual.Children.Add(border);
_containerVisual.Children.Add(text);
// Create parent-child relationship with host visual and ContainerVisual.
this.AddVisualChild(_containerVisual);
}
// Provide a required override for the VisualChildrenCount property.
protected override int VisualChildrenCount
{
get { return _containerVisual == null ? 0 : 1; }
}
// Provide a required override for the GetVisualChild method.
protected override Visual GetVisualChild(int index)
{
if (_containerVisual == null)
{
throw new ArgumentOutOfRangeException();
}
return _containerVisual;
}
}
' Create a host visual derived from the FrameworkElement class.
' This class provides layout, event handling, and container support for
' the child visual objects.
Public Class MyContainerVisualHost
Inherits FrameworkElement
Private _containerVisual As ContainerVisual
Public Sub New(ByVal border As DrawingVisual, ByVal text As DrawingVisual)
' Create a ContainerVisual to hold DrawingVisual children.
_containerVisual = New ContainerVisual()
' Add children to ContainerVisual in reverse z-order (bottom to top).
_containerVisual.Children.Add(border)
_containerVisual.Children.Add(text)
' Create parent-child relationship with host visual and ContainerVisual.
Me.AddVisualChild(_containerVisual)
End Sub
' Provide a required override for the VisualChildrenCount property.
Protected Overrides ReadOnly Property VisualChildrenCount() As Integer
Get
Return If(_containerVisual 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 _containerVisual Is Nothing Then
Throw New ArgumentOutOfRangeException()
End If
Return _containerVisual
End Function
End Class
Comentários
Por padrão, um ContainerVisual não tem filhos.
Notas aos Herdeiros
A árvore visual não pode ser modificada durante essa chamada.