J'ai une action Edit
dans mon application WPF, qui est liée aux éléments d'un contrôle ListView
, c'est-à-dire qu'elle est exécutée lorsqu'un élément est double-cliqué ou le bouton Edit
dans la barre d'outils est cliqué. Cette action affiche à son tour une fenêtre modale avec les trucs d'édition.WPF: éléments ListView sélectionnés après l'affichage d'une boîte de dialogue
Maintenant, lorsque je sélectionne plusieurs éléments dans la liste, cliquez sur Modifier, les éléments restent sélectionnés en arrière-plan, aussi, lorsque je ferme la boîte de dialogue, ils sont toujours sélectionnés dans le sens que leur arrière-plan est bleu. Cependant, ils semblent ne pas être sélectionnés dans le sens que le bouton Éditer est désactivé dans la barre d'outils (la méthode CanExecute
de l'action Éditer vérifie simplement FileList.SelectedIndex != -1
. De plus, les éléments "sélectionnés" ne seront pas désélectionnés lorsque je clique sur un autre élément de liste - ils ne sont désélectionnés que lorsque je les clique explicitement un par un - c'est comme si l'arrière-plan bleu leur était collé
Mon code n'utilise pas de styles fantaisie ListView
ou autre, alors qu'est-ce qui pourrait être à l'origine de cela? Je peux poster mon code sur demande, mais il est à peu près standard
EDIT:.
Après avoir coupé mon code, j'ai finalement trouvé ce qui causait ce problème. Après avoir affiché la boîte de dialogue, je modifie les éléments de la collection de données liées, de sorte que ListView soit mis à jour (c'est-à-dire remplace les objets liés par de nouveaux objets). La question est: pourquoi cela pose-t-il un problème et comment dois-je le résoudre?
Comment éditez-vous les éléments? Les remplacer ou simplement changer les propriétés? Il se passe quelque chose dans votre code qui provoque le comportement que vous rencontrez. –
Je les remplace par de nouveaux articles. J'ai découvert que cela invalide la propriété SelectedItems de la liste, c'est-à-dire que l'arrière-plan reste bleu sur les éléments sélectionnés, mais que les nouveaux éléments ne sont pas techniquement sélectionnés (pas dans la liste), ils ne sont pas traités comme tels. J'ai résolu le problème en ajoutant les nouveaux objets dans la collection SelectedItems. –