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 :

Binding à partir de classes différentes


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 89
    Par défaut Binding à partir de classes différentes
    Bonjour,

    J'ai une liste d'objets qui sont des instances de classes de types différents…

    Ces classes possèdent uniquement des propriétés.

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    public class Class1
    {
                private Int32 attribut1;
                private Int16 attribut2;
     
                public Int32 Attribut1
                {
                            get { return attribut1; }
                            set { attribut1 = value; }
                }
     
                public Int16 Attribut2
                {
                            get { return attribut2; }
                            set { attribut2 = value; }
                }
    }
     
    public class Class2
    {
                private Int32 Entier3;
     
                public Int32 Entier3
                {
                            get { return Entier3; }
                            set { Entier3= value; }
                }
    }
    Ces instances (instClasse1 de Classe1 et instClasse2 de Classe2) sont listées dans un TreeView disposé à gauche de mon IHM.

    Dans la partie droite de mon IHM, j'ai un ListView avec deux colonnes ("Nom" et "Valeur").

    Mon but est d'afficher, lorsque je clique sur un Item de mon TreeView (donc sur instClasse1 ou instClasse2), les propriétés (Nom et Valeur) de cette instance dans la ListView.

    J'aimerais effectuer ceci par Binding. Or comme ces instances ne sont pas de la même classe, je ne peux effecteur un Binding "classique" comme vu dans les nombreux exemples…

    Cela est il faisable ? En utilisant peut être des Converter ? De quelle façon ?

    Merci de m'éclairer.

    N'hésitez pas à me poser des questions supplémentaires si mon explication ne vous paraît pas assez claire…

    Pascal

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

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    C'est la 2me question où je comprend rien à ce qu'on demande

    C'est moi qui suis fatigué ou y'a un truc ?

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Par défaut
    Sinon en envisageant la conception un peu différemment...

    Tu crées une classe Base qui a pour propriété Nom et Valeur (et toutes les propriétés communes à tes classes Classe1 et Classe2).
    Ces classes Classe1 et Classe2 héritent alors de Base et contiennent toutes les propriétés qui leurs sont propres

    Et le treeView lui contient des objets Base donc une seule classe .

  4. #4
    Membre Expert Avatar de davcha
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    1 258
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 1 258
    Par défaut
    Essaie ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <ListView ItemsSource="{Binding}">
    	<ListView.View>
    		<GridView>
    			<GridViewColumn Header="Nom" DisplayMemberBinding="{Binding Path=Name}" />
    			<GridViewColumn Header="Valeur" DisplayMemberBinding="{Binding Path=Value}" />
    		</GridView>
    	</ListView.View>
    </ListView>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public partial class Window1 : Window
    {
    	public Window1()
    	{
    		InitializeComponent();
     
    		var c = new { Attribut1 = 23, Attribut2 = 644 };
    		DataContext = from pi in c.GetType().GetProperties()
    					  select new { Name = pi.Name, Value = pi.GetValue(c, null) };
    	}
    }

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 89
    Par défaut Merci pour vos solutions mais
    Je ne comprends pas le code de la ligne suivante :

    var c = new { Attribut1 = 23, Attribut2 = 644 };
    DataContext = from pi in c.GetType().GetProperties()
    select new { Name = pi.Name, Value = pi.GetValue(c, null) };
    Pascal

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

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    C'est du C# 3: cela fait appel à l'inférence de type, aux types anonymes, aux requêtes LINQ et à la reflexion (introspection en français)....

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

Discussions similaires

  1. Génération de tables à partir des classes
    Par bbo1991 dans le forum Rational
    Réponses: 6
    Dernier message: 02/03/2007, 12h10
  2. [CSS] background-image et classes différentes
    Par Istrella dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 15/09/2006, 18h44
  3. Generer les .hbm a partir des classes
    Par you98 dans le forum Hibernate
    Réponses: 1
    Dernier message: 28/08/2006, 17h44
  4. [C#] Modifier mes Forms a partir de Class
    Par folk dans le forum Windows Forms
    Réponses: 12
    Dernier message: 01/08/2006, 17h54
  5. Réponses: 4
    Dernier message: 07/06/2004, 13h34

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