Visual.RemoveVisualChild(Visual) メソッド

定義

2 つのビジュアル間の親子リレーションシップを削除します。

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)

パラメーター

child
Visual

親ビジュアルから削除するビジュアル子オブジェクト。

次の例では、ビジュアル子のカスタムストレージ要件を定義する方法を示します。 この例では、メソッドとメソッドを使用して、 AddVisualChild RemoveVisualChild 親ビジュアルとの間に親子リレーションシップを設定し child ます。 ビジュアルツリーが正しく列挙されるようにするために、この例では、メソッドとプロパティのオーバーライドされた実装を示して GetVisualChild VisualChildrenCount います。

注意

VisualCollectionビジュアルオブジェクト間に親子関係を作成するためにを使用することもできますが、1つの子のみが親にリンクされている場合は、独自のカスタムストレージの実装を提供する方が効率的です。

// 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

注釈

メソッドは、 RemoveVisualChild 2 つのビジュアル間の親子リレーションシップを削除します。 このメソッドは、メソッドと共に、 AddVisualChild ビジュアル子オブジェクトの基になるストレージの実装に対してより高いレベルの制御が必要な場合に使用する必要があります。 VisualCollection 子オブジェクトを格納するための既定の実装として使用できます。

適用対象

こちらもご覧ください