IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Presentation Foundation Discussion :

[WPF] ListBox : evenement SelectionChanged se déclenche lorsque SelectedItemS change


Sujet :

Windows Presentation Foundation

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 48
    Points : 30
    Points
    30
    Par défaut [WPF] ListBox : evenement SelectionChanged se déclenche lorsque SelectedItemS change
    Bonjour,
    Voici donc mon problème :
    - Dans mon modèle j'ai une classe Document qui contient une collection observable que j'appele Items
    - Cette collection d'Items est representé sur un ItemsControl (Canvas) (effectué par un binding sur la proprieté Items de l'objet Document et l'ItemsSource)
    - Cette même collection est aussi representé sur un ListBox (binding sur l'ItemsSource)

    Jusque là tout va bien ... si je supprime ou que je rajoute un Item en passant par l'un ou l'autre des representations je n'ai rien a faire tout est mis à jour automatiquement (vive WPF )

    La deuxième étape de mon développement consistait à pour pouvoir effectuer des selections multiples de ces Items soit par le biais de l'ItemsControl (Canvas) ou la ListBox : voici ma façon de l'implémenter
    - Dans le modèle, dans la classe Document j'ai ajouté une liste d'Items que j'ai appelé SelectedItems

    - A chaque fois que je selectionne un Items sur l'IHM un evenement est déclenché par l'originaire de la selection (Canvas ou la ListBox) et envoit la nouvelle liste au modèle qui met à jour la sienne puis declenche un evenement pour mettre a jour l'IHM.

    - Le probleme est que pour detecter la selection sur la ListBox j'ecoute l'evenement SelectionChanged puis je recupère la liste SelectedItems (je suis en selection multiple) et je l'envois au modèle qui la copie dans sa liste SelectedItems puis declenche l'evenement pour la mise à jour coté Canvas mais aussi coté ListBox OR lorsqu'on reçoit cet event coté ListBox on met à jour sa liste SelectedItems (pour se mettre à jour) ET ceci déclenche l'evenement ... SelectionChanged qui appelle la mise à jour du modèle ... et ainsi de suite ......

    Je doute fort donc que ma façon de faire soit la bonne et je suis sûr que ce genre de problèmes a déjà été rencontré auriez vous une façon plus correcte de faire ça (au début je pensais que de la même façon que j'ai fait avec les Items en les bindant avec la liste Items de mon modèle je ferais de même pour les SelectedItems mais en fait cette dernière est read-only dommage)

    Merci d'avance ... j'espère que j'ai pu bien expliquer mon problème
    Je reste bien entendu à votre disposition pour plus d'eclaircissement
    Cordialement

  2. #2
    En attente de confirmation mail
    Inscrit en
    Août 2006
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Août 2006
    Messages : 550
    Points : 669
    Points
    669
    Par défaut
    Bonjour,

    Ce genre de chose peu arriver si tu vide ta liste ce qui fait que tu perds ta selection en cours...
    il suffit de signaler à la méthode que tu es en cours de traitement avec une variable static par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    Sub ListBox_SelectedChanged(..) Handles ListBox.SelectedChanged
     
      Static Bln_Working As boolean = False
     
      If Bln_Working Then Exit Sub
     
      ' Je mettrais bien ça dans un bloc Try Catch, 
      ' pour être sur que la variable ressorte correctement initialisée
      Try
        ' Début du traitement
        Bln_Working = True
     
        '... Traitement
     
      Finally
        ' Fin du traitement
        Bln_Working = False  
      End Try
    End Sub

  3. #3
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Citation Envoyé par anisb Voir le message
    j'espère que j'ai pu bien expliquer mon problème
    Pas trop pour moi, désolé...

    Si la solution de Kelpan ne fonctionne pas, essaye de nous réexpliquer cela plus... clairement

  4. #4
    Membre régulier Avatar de despeludo
    Inscrit en
    Janvier 2004
    Messages
    121
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 121
    Points : 83
    Points
    83
    Par défaut
    Je dis peut-être une bétise mais as-tu essayé de binder la propriété Selected des Items de ta Listbox à un champ particulier (à rajouter sans doute) de ta collection observable ?
    Genre une espèce de binding bidirectionnel.
    Il y a sans doute un effet de bord : comme tu as deux représentation de ta liste, la sélection dans l'une va entrâiner la sélection dans l'autre. Cependant, cela doit pouvoir se résoudre en spécifiant le mode de Binding (OneWay ou l'autre dont je me rappel plus).

Discussions similaires

  1. [WPF] ListBox & SelectionChanged
    Par NeoKript dans le forum Windows Presentation Foundation
    Réponses: 18
    Dernier message: 12/10/2011, 20h51
  2. [WPF][ListBox]Type d'elements d'une ListBox est une form?
    Par bakonu dans le forum Windows Presentation Foundation
    Réponses: 10
    Dernier message: 18/02/2008, 10h00
  3. [WPF] ListBox sélectionner des élément par défaut
    Par JuTs dans le forum Framework .NET
    Réponses: 15
    Dernier message: 27/12/2007, 16h25
  4. [WPF] Listbox personnalisée sur 3 colonnes
    Par UNi[FR] dans le forum C#
    Réponses: 1
    Dernier message: 11/09/2007, 17h02
  5. Listbox - Evenement OnChange
    Par gregb34 dans le forum ASP.NET
    Réponses: 3
    Dernier message: 13/07/2007, 14h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo