Cari kawalan kanak-kanak mengikut jenis dalam WPF
Mendapatkan sub-kawalan tertentu dalam bekas WPF boleh dicapai dalam pelbagai cara. Dalam contoh ini, anda ingin mendapatkan semula kawalan ComboBox dalam kawalan Grid bernama "MyContainer".
Kod yang anda berikanthis.MyContainer.Children.GetType(ComboBox);
salah. Sintaks yang betul untuk mendapatkan semula kawalan ComboBox anak MyContainer adalah seperti berikut:
<code class="language-csharp">var myComboboxes = this.MyContainer.Children.OfType<ComboBox>();</code>
Kod ini menggunakan kaedah sambungan OfType() untuk menapis elemen anak MyContainer untuk hanya memasukkan elemen jenis ComboBox. Hasilnya ialah penghitungan yang mengandungi semua ComboBox dalam bekas.
Sebagai alternatif, anda boleh mencari secara rekursif elemen anak jenis tertentu menggunakan kaedah sambungan berikut:
<code class="language-csharp">public static T GetChildOfType<T>(this DependencyObject depObj) where T : DependencyObject { if (depObj == null) return null; for (int i = 0; i < VisualTreeHelper.GetChildrenCount(depObj); i++) { DependencyObject child = VisualTreeHelper.GetChild(depObj, i); if (child is T result) return result; T result = GetChildOfType<T>(child); if (result != null) return result; } return null; }</code>
Untuk menggunakan kaedah ini anda boleh menghubungi:
<code class="language-csharp">MyContainer.GetChildOfType<ComboBox>();</code>
Ini akan mendapatkan semula ComboBox pertama yang ditemui dalam bekas. Jika anda perlu mendapatkan semula semua ComboBoxes, anda boleh menggunakan kaedah OfType() yang ditunjukkan sebelum ini.
Atas ialah kandungan terperinci Bagaimana untuk Mencari Semua Kawalan ComboBox dengan Cekap dalam Grid WPF?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!