WPF ComboBox et listes personnalisées : défis et solutions contraignants
Lier une ComboBox WPF à une liste personnalisée implique d'utiliser DisplayMemberPath
et SelectedValuePath
pour contrôler la façon dont les données sont affichées et sélectionnées. Cependant, un problème courant est l'échec de la mise à jour correcte de SelectedItem
/SelectedValue
. Cela vient souvent d'un DataContext
mal réglé.
Le problème DataContext
Le DataContext
dicte quelles propriétés d'objet sont utilisées pour la liaison de données au sein d'un élément donné. Oublier de le configurer correctement pour votre ComboBox est une cause fréquente de problèmes de liaison.
Solution : Définition du DataContext
Pour résoudre ce problème, assurez-vous que le DataContext
du ComboBox pointe vers l'objet contenant la propriété à laquelle vous vous liez (SelectedValue
ou SelectedItem
). Exemple :
<code class="language-xml"><ComboBox DataContext="{Binding RelativeSource={RelativeSource AncestorType={x:Type Window}}}" DisplayMemberPath="Name" ItemsSource="{Binding Path=PhonebookEntries}" SelectedValue="{Binding Path=PhonebookEntry}" SelectedValuePath="Name"> </ComboBox></code>
Cela lie la ComboBox au Window
d'un DataContext
(généralement votre ViewModel), garantissant l'accès aux propriétés du ViewModel.
Considérations importantes :
DisplayMemberPath
et SelectedValuePath
(dans ce cas, "Nom").CollectionView
peut entraîner des problèmes de liaison. Une classe dérivée est recommandée. Cette limitation est absente dans .NET 4.6 et versions ultérieures.Reliure réussie : un résumé
En définissant correctement le DataContext
, en utilisant les valeurs DisplayMemberPath
et SelectedValuePath
appropriées et en vérifiant les propriétés de votre liste personnalisée, vous pouvez lier de manière fiable une ComboBox WPF à vos données personnalisées.
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!