Comment obtenir des éléments cochés dans un ListBox WPF?

J’ai une case à cocher WPF ListBox, mais comment obtenir la liste des éléments cochés?

Le ListBox est une donnée liée à un Dictionary .

Voici le XAML:

                         

Cela se fait généralement via un ViewModel, c’est-à-dire une structure de données qui expose à la vue (via le DataContext) le modèle (vos données) et des informations spécifiques à la vue, comme si un élément est coché ou non.

Dans votre exemple, votre dictionnaire ne serait pas, par exemple, un dictionnaire, mais un dictionnaire et le PersonViewModel auraient une propriété IsChecked et une propriété Personne pointant vers le modèle.

Sinon, vous devez aller chercher la case à cocher dans les modèles ou accéder à l’élément de la boîte à liste à partir de la case à cocher et cela devient complexe assez rapidement.

Josh Smith a un article sur codeproject qui devrait expliquer ce dont vous avez besoin. Il discute d’une TreeView mais le principe sera également transféré à CheckBox .

Il existe également une approche très intéressante utilisant un DataTemplate et une liaison de la propriété CheckBox.IsChecked à la propriété ListBoxItem.IsSelected .

Si vous êtes nouveau sur MVVM, Jason Dolinger a une excellente vidéo sur le sujet. Il vous guide tout au long du processus, passant de l’utilisation du code derrière les fichiers à un modèle MVVM complet, y compris l’dependency injection et le test.