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 :

[ListBox] Ajout d'élément


Sujet :

Windows Presentation Foundation

  1. #1
    Membre éprouvé Avatar de orfix
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 707
    Points : 1 132
    Points
    1 132
    Par défaut [ListBox] Ajout d'élément
    Salut,

    J'ai dessiné un listBox (list_e) sous Expression Blend 2 puis j'ai rajouté dedans quelques ellipses, j'ai aussi essayé d'ajouter des ellipses dynamiquement (disant à chaque clique sur un bouton) je suis passé donc du côté de Visual C# 2008 Ex avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Ellipse ellipse = new Ellipse();
     
    ellipse = patronEllipse; // patronEllipse est une ellipse qui existe déjà
    list_e.Items.Add(ellipse);
    mais je me heurte à l'erreur suivante :

    L'élément possède déjà un parent logique. Il doit être détaché de l'ancien parent avant d'être attaché au nouveau.
    Merci

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 562
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 562
    Points : 1 313
    Points
    1 313
    Par défaut
    peut etre que tu as deja binde quelque chose dessus !!!!

  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
    Points : 3 015
    Points
    3 015
    Par défaut
    Si "patronEllipse est une ellipse qui existe déjà", tu ne pourras pas, il faut d'abord l'enlever de là où elle est placée pour la replacer où tu veux (cf. le message )

    Il faut que tu recrées l'ellipse si tu veux pas les supprimer (une petite fonction de ce style) :
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
              private Ellipse CreateEllipse() {
                Ellipse myEllipse = new Ellipse();
     
                SolidColorBrush mySolidColorBrush = new SolidColorBrush();
                mySolidColorBrush.Color = Color.FromArgb(255, 255, 255, 0);
                myEllipse.Fill = mySolidColorBrush;
                myEllipse.StrokeThickness = 2;
                myEllipse.Stroke = Brushes.Black;
     
                myEllipse.Width = 200;
                myEllipse.Height = 100;
     
                return myEllipse;
              }

    Pour ensuite faire :
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Ellipse ellipse = CreateEllipse();
    list_e.Items.Add(ellipse);

  4. #4
    Membre éprouvé Avatar de orfix
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 707
    Points : 1 132
    Points
    1 132
    Par défaut
    ça fonctionne merci beaucoup !

    Mais si je veux que mon ellipse garde le même style que patronEllipse, j'ai essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    private Ellipse CreateEllipse(Ellipse patronEllipse)
    {
           Ellipse myEllipse = new Ellipse();
           myEllipse.Style = patronEllipse.Style;
           myEllipse.Width = patronEllipse.Width;
           myEllipse.Height = patronEllipse.Height;
     
           return myEllipse;
    }
    Mais l'ellipse n'apparaît pas dans ma liste. (en Gros je veux un constructeur de copie, puis par la suite je modifie les propriétés qui m'intéresse )

    Merci

  5. #5
    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
    Est-ce que le style de patronEllipse est particulier et pourrais faire en sorte que tu ne vois pas ton ellipse ?

  6. #6
    Membre éprouvé Avatar de orfix
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 707
    Points : 1 132
    Points
    1 132
    Par défaut
    non non au fait le style de patronEllipse en plus des propriétés visuels il attache quelques storyBoards qui se déclenche lors du passage de la souris sur l'ellipse, je vous mets une capture d'écran vous comprendrais :



    l'ellipse Jaune est celle ajoutée par le code de binoo elle n'est donc pas comme les autres ellipses déjà présente dans la liste et ne réagis pas lors du passage de la souris (au moment de la capture d'écran la souris était sur l'ellipse verte, sa taille augmente tout en décalant les autres ellipses).

  7. #7
    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
    Je me demande si ton problème ne vient pas des Storyboards justement: si tu fais le test avec un style qui n'en as pas ?

  8. #8
    Membre éprouvé Avatar de orfix
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 707
    Points : 1 132
    Points
    1 132
    Par défaut
    Je viens de trouver, il fallait copier les propriétés une à une comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Ellipse ellipse = new Ellipse();
     
    ellipse.Style = ellipsePatron.Style;
    ellipse.Height = ellipsePatron.Height;
    ellipse.Width = ellipsePatron.Width;
    ellipse.Fill = ellipsePatron.Fill;
    ellipse.Stroke = ellipsePatron.Stroke;
     
    list_e.Items.Add(ellipse);
    Merci

  9. #9
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 562
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 562
    Points : 1 313
    Points
    1 313
    Par défaut
    c'est la qu'on se dit qu'un bon constructeur par copy a l'ancienne ca serait top

  10. #10
    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 : 38
    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
    Points : 3 958
    Points
    3 958
    Par défaut
    Dans ce cas un "Object.MemberwiseClone" devrait suffire.

    Sinon pour le constructeur par copie :
    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
    public static class ReflectionUtils
    {
    	public static void ImportProperties(this Object to, Object from)
    	{
    		Type fromType = from.GetType();
     
    		PropertyInfo[] fromProperties = fromType.GetProperties();
     
    		foreach(PropertyInfo property in fromProperties)
    		{
    			MethodInfo propertyGetter = property.GetGetMethod();
    			MethodInfo propertySetter = property.GetSetMethod();
     
    			Object propertyValue = propertyGetter.Invoke(from, null);
     
    			propertySetter.Invoke(to, new Object[]{ propertyValue });
    		}
    	}
    }
    Puis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ellipse.ImportProperties(ellipsePatron)
    devrait le faire.

    Code non testé sans garanties.

  11. #11
    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
    Oui mais cela fait appel à de la reflection donc en termes de perf, je ne suis pas sur que cela soit le mieux...

  12. #12
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 562
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 562
    Points : 1 313
    Points
    1 313
    Par défaut
    d'autant qu'avec les methodes d'extention autant rajouter une clone sur l'ellipse
    je veux dire un clone simple ..... ehehehheheh

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

Discussions similaires

  1. MVVM, ListBox et ajout d'élément
    Par Invité dans le forum Silverlight
    Réponses: 10
    Dernier message: 15/10/2010, 10h10
  2. Réponses: 3
    Dernier message: 25/01/2009, 17h32
  3. [ListBox] Ajout d'un élément
    Par La Praline dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 24/03/2007, 17h57
  4. [VB.Net 2005]Ajouter un élément à une listbox
    Par DonF dans le forum Windows Forms
    Réponses: 2
    Dernier message: 27/09/2006, 13h07
  5. Ajouter des éléments à ListBox
    Par priest69 dans le forum Access
    Réponses: 5
    Dernier message: 20/09/2005, 14h05

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