Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mendapatkan KomboBox Kanak-kanak dengan Cekap daripada Grid WPF?
Mengekstrak Kawalan Kanak-kanak Khusus daripada Bekas WPF: Pendekatan Praktikal
Cabaran yang kerap dalam pengaturcaraan WPF melibatkan pengasingan kawalan kanak-kanak jenis tertentu dalam bekas induk. Artikel ini menunjukkan cara untuk mendapatkan semula ComboBox
elemen yang bersarang dalam Grid
dengan berkesan.
Mari kita periksa sampel struktur XAML untuk Grid
bernama "MyContainer":
<code class="language-xml"><Grid x:Name="MyContainer"> <Label Content="Name" Name="label1"/> <Label Content="State" Name="label2"/> <ComboBox Height="23" HorizontalAlignment="Left" Name="comboBox1"/> <ComboBox Height="23" HorizontalAlignment="Left" Name="comboBox3"/> <ComboBox Height="23" HorizontalAlignment="Left" Name="comboBox4"/> </Grid></code>
Untuk mendapatkan semula kawalan ComboBox
terbenam dengan cekap, kami boleh memanfaatkan kaedah sambungan rekursif:
<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 result2 = GetChildOfType<T>(child); if (result2 != null) return result2; } return null; }</code>
Kaedah sambungan ini secara rekursif melintasi pokok visual. Menggunakannya, anda boleh mengakses elemen ComboBox
dengan mudah:
<code class="language-csharp">var myComboBox = this.MyContainer.GetChildOfType<ComboBox>();</code>
Coretan kod ringkas ini dengan berkesan mendapatkan semula ComboBox
pertama yang ditemui dalam MyContainer
Grid. Ambil perhatian bahawa kaedah ini hanya akan mengembalikan pertama ComboBox yang ditemuinya. Untuk mendapatkan semula semua ComboBox, pendekatan yang lebih komprehensif diperlukan, seperti mengulangi kanak-kanak dan menggunakan child is ComboBox
dalam satu gelung.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan KomboBox Kanak-kanak dengan Cekap daripada Grid WPF?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!