Visual.RemoveVisualChild(Visual) Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Удаляет связь "родитель-потомок" между двумя визуальными объектами.
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 создания отношений между визуальными объектами между родительскими и дочерними элементами, более эффективно обеспечить собственную реализацию пользовательского хранилища, если только один дочерний элемент связан с родительским объектом.
// 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 удаляет связь "родитель-потомок" между двумя визуальными элементами. Этот метод вместе с AddVisualChild необходимо использовать метод, когда требуется более низкого уровня управления базовой реализацией хранилища визуальных дочерних объектов. VisualCollection можно использовать в качестве реализации по умолчанию для хранения дочерних объектов.