FrameworkElement.AddLogicalChild(Object) Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Menambahkan objek yang disediakan ke pohon logis elemen ini.
protected public:
void AddLogicalChild(System::Object ^ child);
protected internal void AddLogicalChild (object child);
member this.AddLogicalChild : obj -> unit
Protected Friend Sub AddLogicalChild (child As Object)
Parameter
- child
- Object
Elemen anak yang akan ditambahkan.
Contoh
Contoh berikut mengimplementasikan Child
properti pada kustom FrameworkElement yang melakukan implementasi lapisan visualnya sendiri. Setter properti dirancang sehingga jika nilai berubah, nilai lama dihapus dari pohon logis, serta koleksi visual khusus kelas. Nilai properti di-cache, lalu nilai baru ditambahkan ke pohon logis dan koleksi visual kustom.
public virtual UIElement Child
{
get
{
return _child;
}
set
{
if (_child != value)
{
//need to remove old element from logical tree
if (_child != null)
{
OnDetachChild(_child);
RemoveLogicalChild(_child);
}
_vc.Clear();
if (value != null)
{
//add to visual
_vc.Add(value);
//add to logical
AddLogicalChild(value);
}
//always add the overlay child back into the visual tree if its set
if (_overlayVisual != null)
_vc.Add(_overlayVisual);
//cache the new child
_child = value;
//notify derived types of the new child
if (value != null)
OnAttachChild(_child);
InvalidateMeasure();
}
}
}
<System.ComponentModel.DefaultValue(GetType(Object), Nothing)>
Public Overridable Property Child() As UIElement
Get
Return _child
End Get
Set(ByVal value As UIElement)
If _child IsNot value Then
'need to remove old element from logical tree
If _child IsNot Nothing Then
OnDetachChild(_child)
RemoveLogicalChild(_child)
End If
_vc.Clear()
If value IsNot Nothing Then
'add to visual
_vc.Add(value)
'add to logical
AddLogicalChild(value)
End If
'always add the overlay child back into the visual tree if its set
If _overlayVisual IsNot Nothing Then
_vc.Add(_overlayVisual)
End If
'cache the new child
_child = value
'notify derived types of the new child
If value IsNot Nothing Then
OnAttachChild(_child)
End If
InvalidateMeasure()
End If
End Set
End Property
Keterangan
Gunakan metode ini untuk implementasi koleksi pada objek yang mewakili elemen anak logis dari elemen . Pemeliharaan pengumpulan untuk koleksi elemen anak mungkin dilakukan di getter atau setter properti, penanganan kelas peristiwa yang diubah, konstruktor, atau dalam jenis koleksi itu sendiri.
Untuk penulis kontrol, memanipulasi pohon logis pada tingkat ini bukanlah praktik yang direkomendasikan, kecuali tidak ada model konten untuk kelas kontrol dasar yang tersedia yang sesuai untuk skenario kontrol Anda. Pertimbangkan subkelas pada tingkat ContentControl, , ItemsControldan HeaderedItemsControl. Kelas-kelas ini menyediakan model konten dengan penegakan khusus elemen anak pohon logis melalui API khusus, serta dukungan untuk fitur lain yang biasanya diinginkan dalam kontrol WPF seperti menata melalui templat. Untuk informasi selengkapnya tentang cara menggunakan LogicalChildren dan AddLogicalChild, lihat Pohon di WPF.
AddLogicalChild dapat melemparkan pengecualian jika dipanggil pada saat pohon logis sedang di-iterasi oleh proses lain.