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 :

Difference entre List<object> et object[]


Sujet :

Silverlight

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2009
    Messages
    2 056
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2009
    Messages : 2 056
    Par défaut Difference entre List<object> et object[]
    Bonjour,
    ce pourrait être une question .Net mais mon "problème" vient d'un binding en silverlight.
    J'ai besoin de récupérer depuis un webservice des "domaines".
    Un domaine et une liste d'ensemble de valeur de cardinalité inconnu.
    Ex: Domaine1 : { {1,"voiture"} , {2,camion}....}
    Domaine2 { {"FR","Francais",3} , {"ES","ESPAGNE",12} ....}
    Domaine3 { {3},{5},{25}.....}
    J'ai donc decidé que mon webservice retourne une List<Object[]>.

    Maintenant depuis une combobox je souhaite pouvoir afficher un domaine en spécifiant par binding quel index de mon tableau afficher.
    Par exemple pour mon domaine1 si je veux afficher le nom du vehicule en recuperant son ID je fais:
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    <ComboBox Width="150" Height="32" ItemsSource="{Binding Domaine1}" SelectedValuePath="[0]" DisplayMemberPath="[1]"></ComboBox>
    C'est la qu'intervient la question du titre du post. Avec un List<object[]> cela ne fonctionne pas.
    Erreur System.Windows.Data*: impossible de se connecter à l'index '1' dans l'objet '1,voiture' (type 'System.String'). BindingExpression : Path='[1]' DataItem='1,voiture' (HashCode=-1871399090); l'élément cible est 'System.Windows.Controls.TextBlock' (Name=''); la propriété cible est 'Text' (type 'System.String').
    Par contre avec un List<List<object>> cela fonctionne parfaitement.
    Dans l'absolue rien ne me force a utiliser le List<object[]> je vais donc utiliser l'autre solution mais je me pose tout de même la question: Quest ce qui differencie ces deux collections au niveau du binding? J'ai l'impression que le object[] est autoconcaténé par le TextBlock du Combobox?

    Voila rien d'urgent juste une question existentielle!
    Merci d'éclairer ma lanterne

  2. #2
    Expert confirmé Avatar de Lapinpanda
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2009
    Messages
    3 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 230
    Par défaut
    <ComboBox Width="150" Height="32" ItemsSource="{Binding Domaine1}" SelectedValuePath="[0]" DisplayMemberPath="[1]"></ComboBox>
    [0] n'est pas une property. A la limite MaProperty[0] marche

  3. #3
    Membre Expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2009
    Messages
    2 056
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2009
    Messages : 2 056
    Par défaut
    Certes, mais dans le cas de la List<object> ca n'est pas non plus une property?
    Pourtant ca fonctionne

  4. #4
    Expert confirmé Avatar de Lapinpanda
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2009
    Messages
    3 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 230
    Par défaut
    Domaine1 est une property, sinon ton binding ne marcherait pas.

  5. #5
    Membre Expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2009
    Messages
    2 056
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2009
    Messages : 2 056
    Par défaut
    Oui domain1 est une propriété de type List<List<object>> ou List<object[]> .
    Dans le premier cas ca fonctionne, dans le second non.

  6. #6
    Expert confirmé Avatar de Lapinpanda
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2009
    Messages
    3 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 230
    Par défaut
    Citation Envoyé par micka132 Voir le message
    Oui domain1 est une propriété de type List<List<object>> ou List<object[]> .
    Dans le premier cas ca fonctionne, dans le second non.
    On ne peut pas utilisé [0] tel quel, il faut l'associer avec un nom de property.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    public class DomainToto
    {
     public List<object[]> toto;
     
    }
     
    <moncontrol maproperty={Binding toto[0]} />
    Ce type de syntaxe fonctionne.

    Après, SelectedValuePath="[0]" me parait bizarre, car il attend un le nom au format "String" d'une property. [0] n'est pas le nom d'une property, donc cela ne amrchera jamais

Discussions similaires

  1. Recuperer les difference entre 2 list object
    Par topolino dans le forum ASP.NET
    Réponses: 6
    Dernier message: 11/01/2010, 15h07
  2. Réponses: 35
    Dernier message: 21/03/2007, 10h36
  3. Différence entre deux listes
    Par Celelibi dans le forum Linux
    Réponses: 4
    Dernier message: 26/04/2006, 09h46
  4. difference entre vector, deque, list et tableau
    Par salseropom dans le forum SL & STL
    Réponses: 8
    Dernier message: 03/01/2005, 13h35
  5. Différences entre POJO et Value Objects
    Par romain3395 dans le forum Hibernate
    Réponses: 2
    Dernier message: 22/11/2004, 21h13

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