RemoveAt dans Observable Collection, modifie également la propriété IsSelected dans ListView


0

Je voudrais essayer autant explicite que possible.

J'ai deux objets de l'interface utilisateur, ceci est un TabControl et un ListView, les deux sont à nouveau deux binded liste différente des mêmes objets, ont tous deux la propriété IsSelected binded contre la Item.IsSelected que les commandes Voir modèle,

cela fonctionne parfaitement, (je peux le prouver, en sélectionnant dans l'une des sources, et les autres d'une manière de sélection mis à jour)

mon problème est lors de la suppression d'un élément de l'une des deux listes. La méthode Remove semble invoquer IsSelected à FALSE et l'élément est donc UNSELECTED dans l'autre liste qui apparaît toujours.

Qu'est-ce que je fais mal ??

toute aide serait vraiment appréciée.

Thnks à l'avance

  0

pouvez-vous afficher le code incriminé? 22 févr.. 092009-02-22 06:33:01

0

qui peut être soit un bug ou un oubli dans les contrôles. Ce que vous pouvez faire est d'écrire votre propre méthode Remove qui enregistre la sélection, supprime l'élément, puis replace la sélection.


1

Ce qui se passe est que lorsque vous ajoutez/supprimez un élément de la collection observable, il rafraîchit la liste. Il le fait pour que tous les filtres/vues/etc. sera rafraîchi/refiltré. Hélas, comme vous l'avez découvert, il ne gère pas l'élément sélectionné dans les contrôles liés lorsqu'il est actualisé.

  0

yup Je savais que c'est ce qui s'est passé mais je vais devoir faire demi-tour à 180 degrés, pour changer ce que j'ai. C'est un comportement incroyable dans WPF, mais parfois cela vous affecte. J'ai aussi essayé de relier chaque contrôle sur ma propre propriété de sélection, mais je n'aime pas ça du tout. Donc, je suis sur la voie wron je pense. 22 févr.. 092009-02-22 14:59:22

  0

Oui, si vous voulez maintenir la sélection, vous devrez faire du roll-your-own :-(Nous avons trouvé tout cela dans mon entreprise en essayant de faire quelque chose de similaire. 22 févr.. 092009-02-22 16:34:32