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

Silverlight Discussion :

SelectedItem de Combobox


Sujet :

Silverlight

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17
    Par défaut SelectedItem de Combobox
    Bonjour à tous,
    Je rencontre un problème étrange lorsque je veux sélectionner un élément d'une liste déroulante dans une application Silverlight.
    Voici comment est définie ma liste déroulante dans le xaml:

    Code xaml : Sélectionner tout - Visualiser dans une fenêtre à part
    <ComboBox x:Name="ListeZones" VerticalAlignment="Center" Margin="0,0,10,0" />

    Voici mon code C# qui est censé sélectionner un élément de la liste:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var test = ListeZones.Items.Where(z => ((Zone)z).idZone == lieu.idZone);
    ListeZones.SelectedItem = test.Single();
    lieu est un objet (non null) de ma méthode.
    Lorsque la deuxième ligne est exécutée, une exception ArgumentNullException est lancée:

    L'exception System.NullReferenceException n'a pas été gérée par le code utilisateur
    Message=La référence d'objet n'est pas définie à une instance d'un objet.
    Petite précision, test contient bien un seul élément.
    Le problème est survenu lorsque je suis passé de la version 4 à la version 5 de Silverlight.

    Quelqu'un a-t-il déjà rencontré ce problème?
    Avez-vous une idée de comment le résoudre?

    Merci d'avance.

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Si tu es sûr que lieu n'est pas null, la seule explication que je vois c'est que ta liste contient des items nulls (et donc ((Zone)z).idZone plante)

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17
    Par défaut
    Merci pour ta réponse.
    Donc, pour être sûr que ce n'est pas "lieu" qui pose problème, j'ai tenté de simplifier le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ListeZones.Items.Clear();
    ListeZones.Items.Add("Salut");
    ListeZones.SelectedIndex = 0;
     
    ListeZones.Items.Clear();
    ListeZones.Items.Add(new Zone());
    ListeZones.SelectedIndex = 0;
    La ligne 3 s'exécute sans problèmes. Par contre, la dernière ligne me renvoie toujours la même exception.
    Je ne comprends pas bien pourquoi l'utilisation d'un objet personnalisé lance une exception quand on le sélectionne dans la liste...

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Bizarre... Tu peux montrer la stacktrace de l'exception ?

  5. #5
    Membre Expert

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    2 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 2 067
    Par défaut
    il faut pas spécifier le champ afficher dans la combobox et le champ retourné?

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17
    Par défaut
    Ok, j'ai trouvé.
    Mon objet Zone provient d'un service web. Je lui ai ajouté les méthodes Equals() et GetHashCode() (classe partielle). La méthode Equals est appelée à chaque fois que je sélectionne un nouvel élément dans la liste déroulante (via le code).
    Le problème se situait dans cette méthode, je ne vérifiais pas si l'objet envoyé était null ou non.
    Je suppose que l'exception n'était pas lancée à partir de la méthode Equals parce que les objets provenant des services web possèdent l'attribut: [System.Diagnostics.DebuggerStepThroughAttribute()]

    Quoiqu'il en soit, merci pour votre aide.

    A+

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

Discussions similaires

  1. selecteditem et combobox
    Par midialzer dans le forum Silverlight
    Réponses: 2
    Dernier message: 02/09/2012, 14h15
  2. Problème combobox SelectedItem
    Par Nadiya dans le forum Windows Forms
    Réponses: 7
    Dernier message: 03/09/2010, 14h58
  3. Récupère toujours le mm selectedItem d'une comboBox
    Par AlKoLiK dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 12/01/2009, 11h07
  4. [FLASH MX2004] [ComboBox] Pb avec selectedItem
    Par jadey dans le forum Flash
    Réponses: 23
    Dernier message: 06/07/2006, 16h32
  5. Réponses: 4
    Dernier message: 06/07/2006, 02h18

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