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 :

Sélection bizarre avec une listbox


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de titourock
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2008
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 156
    Par défaut Sélection bizarre avec une listbox
    Bonjour à tous,

    Je viens de faire quelques petits tests avec WPF chez moi pour le plaisir (si si promis :p !) et j'ai obtenu quelque chose qui me paraît étrange...

    En fait, je crée une simple listebox dont je binde l'itemssource sur une ObservableCollection. Jusque là rien de bien transcendantal...

    Tout fonctionne bien, les éléments s'ajoutent bien visuellement. Coup de folie, je décide de sélectionner une élément et là c'est le drame, sur certains cliques deux éléments sont sélectionnés en même temps. Je n'avais jamais eu ce comportement à mon travail.

    Cependant mon poste de travail d'entreprise est sous XP et chez moi je suis sous Seven...je me demande donc cela n'a pas un lien...J'ai même recompiler mon projet (qui était initialement compilé via le framework 4.0) en 3.5 mais le résultat est le même.

    Je vous livre mon code qui est somme toute très simple...

    Mon code XAML :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <Window x:Class="TestListBox.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
      <StackPanel>
        <ListBox ItemsSource="{Binding Source}" SelectionMode="Single" Height="120"/>
     
      </StackPanel>
    </Window>
    et mon code behind :

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Data;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Imaging;
    using System.Windows.Navigation;
    using System.Windows.Shapes;
    using System.Collections.ObjectModel;
    using System.ComponentModel;
     
    namespace TestListBox
    {
      /// <summary>
      /// Logique d'interaction pour MainWindow.xaml
      /// </summary>
      public partial class MainWindow : Window, INotifyPropertyChanged
      {
        public MainWindow()
        {
          source = new ObservableCollection<string>();
          source.Add("a");
          source.Add("b");
          source.Add("c");
          source.Add("a");
          source.Add("a");
     
          DataContext = this;
          InitializeComponent();
     
        }
     
        private void OnPropertyChanged(string info)
        {
          if (PropertyChanged != null)
          {
            PropertyChanged(this, new PropertyChangedEventArgs(info));
          }
        }
     
        private ObservableCollection<string> source;
        public ObservableCollection<string> Source
        {
          get
          {
            return source;
          }
     
          set
          {
            source = value;
            OnPropertyChanged("Source");
          }
        }
     
     
        public event PropertyChangedEventHandler PropertyChanged;
     
      }
    }
    Quelqu'un aurait-il déjà rencontré ce problème ?
    Merci d'avance

  2. #2
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    OnPropertyChanged("Source");
    Cette instruction ne sert à rien si tu utilises déjà un ObservableCollection.

    Pour ce qui est de la sélection multiple aléatoire, j'ai pas de réponse.

  3. #3
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Cette instruction ne sert à rien si tu utilises déjà un ObservableCollection.
    Si, puisqu'elle indique qu'une nouvelle collection est disponible.
    ObservableCollection, elle, indiquera quand elle est modifiée.
    Les deux comportements sont indépendants et doivent donc être tous les deux implémentés.

    Quant au problème principal ça doit être dû aux doublons dans la collection.
    Je n'ai pas de XP pour tester, mais en effet sous Seven ça pose problème.

  4. #4
    Membre éprouvé Avatar de titourock
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2008
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 156
    Par défaut
    Merci pour vous réponses.

    Citation Envoyé par seriousme Voir le message

    Quant au problème principal ça doit être dû aux doublons dans la collection.
    Effectivement, les doublons posent problème. Mais tu as déjà rencontré ce problème ?

    [EDIT] : En fait je viens de tester la listbox bindée avec une ICollectionView et j'ai "joué" avec l'évènement CurrentChanged afin de voir si c'était uniquement graphiquement que la sélection ne marchait pas (i.e visuellement deux éléments ou plus qui sont surlignés dans la listbox) et il s'avère que l'évènement n'est pas levé si l'on clique successivement sur des doublons...ces éléments apparaissent donc pour WPF comme étant un seul et unique.

  5. #5
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Mais tu as déjà rencontré ce problème ?
    Non, jamais, car je travaille toujours sur des collections contenant des objets métiers composites, manipulés par référence, donc forcément sans doublons.

    l'évènement n'est pas levé si l'on clique successivement sur des doublons...ces éléments apparaissent donc pour WPF comme étant un seul et unique
    C'est peut-être lié à l'interning des strings; quoi qu'il en soit il faudrait vérifier que ce comportement est le même sous XP.

  6. #6
    Membre éprouvé Avatar de titourock
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2008
    Messages
    156
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 156
    Par défaut
    Je viens de tester sous XP, j'ai le même problème...Le problème doit sûrement venir du fait qu'on n'a pas affaire à un type référence comme tu l'as dit.

    C'est tout de même très embêtant car si on a par exemple une liste de coordonnées de type (x,y) et que l'on veut afficher les projections selon l'axe des abscisses ou des ordonnées on peut avoir plusieurs fois la même abscisse et/ou la même ordonnée...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Sélection d'une feuille excel avec une listbox
    Par felibelle dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 25/07/2022, 17h27
  2. reprise : Sélection d'une feuille excel avec une listbox
    Par philippe6 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 23/09/2013, 11h41
  3. Sélection des lignes de feuille Excel avec une listbox
    Par wlofab dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 22/07/2008, 15h35
  4. [debutant] Probleme avec une listBox.
    Par Mickey.jet dans le forum Delphi
    Réponses: 2
    Dernier message: 30/05/2006, 13h21
  5. [Débutant] Sélection multiples dans une Listbox
    Par eraim dans le forum Access
    Réponses: 4
    Dernier message: 15/10/2005, 03h21

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