Maison >développement back-end >C++ >Comment récupérer efficacement les ComboBox enfants d'une grille WPF ?
Extraire des contrôles enfants spécifiques des conteneurs WPF : une approche pratique
Un défi fréquent dans la programmation WPF consiste à isoler les contrôles enfants d'un type particulier dans un conteneur parent. Cet article montre comment récupérer efficacement des éléments ComboBox
imbriqués dans un Grid
.
Examinons un exemple de structure XAML pour un Grid
nommé "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>
Pour récupérer efficacement les ComboBox
contrôles intégrés, nous pouvons exploiter une méthode d'extension récursive :
<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>
Cette méthode d'extension parcourt récursivement l'arborescence visuelle. Grâce à lui, vous pouvez accéder facilement aux ComboBox
éléments :
<code class="language-csharp">var myComboBox = this.MyContainer.GetChildOfType<ComboBox>();</code>
Cet extrait de code concis récupère efficacement le premier ComboBox
trouvé dans la MyContainer
Grille. Notez que cette méthode ne renverra que la première ComboBox qu'elle rencontre. Pour récupérer toutes les ComboBox, une approche plus complète serait nécessaire, comme parcourir les enfants et utiliser child is ComboBox
dans une boucle.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!