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 :

Couleur alternative du texte dans ListBox?


Sujet :

Windows Presentation Foundation

  1. #1
    Membre chevronné Avatar de roster
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    397
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 397
    Par défaut Couleur alternative du texte dans ListBox?
    Bonsoir,
    Existe-t'il une méthode permettant d'alterner la couleur du texte des items d'une ListBox renseignée par code. Une couleur par ligne.
    Lorsque j'utilise la propriété Foreground de la ListBox, toutes les items changent de couleur. Normal après tout!
    J'ai bien trouvé le moyen par XAML lorsque le nombre d'items est connu par avance, mais chargeant ma listbox dynamiquement en VB, je ne vois pas trop comment faire?!
    Binding? Template? Je suis un peu perdu...

    Je débute, merci pour votre indulgence.

  2. #2
    Expert confirmé
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Par défaut
    Ce qui est bien avec WPF c'est que dans les List et compagnie, on peut mettre ce qu'on veux, même sans passer par les template. Donc moyen le plus simple :
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    for (int i = 0; i < 10; i++)
                {
                    TextBlock m = new TextBlock();
                    m.Foreground = i % 2 == 0 ? Brushes.Black : Brushes.AliceBlue;
                    m.Text = "Item n°" + i.ToString();
                    lst.Items.Add(m);
                }

  3. #3
    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 : 44
    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
    L'exemple dans la doc de la propriété AlternationCount devrait répondre à ta question
    http://msdn.microsoft.com/fr-fr/libr...tioncount.aspx

  4. #4
    Expert confirmé
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Par défaut
    Citation Envoyé par tomlev Voir le message
    L'exemple dans la doc de la propriété AlternationCount devrait répondre à ta question
    http://msdn.microsoft.com/fr-fr/libr...tioncount.aspx
    Attention :
    .NET Framework
    Pris en charge dans : 3.5 SP1, 3.0 SP1

  5. #5
    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
    Pour faire ce genre de chose, il convient d'utiliser un DataTemplateSelector: http://msdn.microsoft.com/fr-fr/libr...eselector.aspx

  6. #6
    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 : 44
    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
    Plutôt un StyleSelector, non ? affecté à la propriété ItemContainerStyleSelector

  7. #7
    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
    Citation Envoyé par tomlev Voir le message
    Plutôt un StyleSelector, non ? affecté à la propriété ItemContainerStyleSelector
    Ben, tout dépend de quoi est remplit ca ListBox mais si on part du principe que c'est avec des DataTemplate, il faut passer par ma solution. Sinon, la tienne peut aller aussi

  8. #8
    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 : 44
    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
    Ben comme il parlait d'alterner les couleurs, le StyleSelector me semblait plus naturel... pas la peine de refaire un DataTemplate si y a que les couleurs qui changent

  9. #9
    Membre chevronné Avatar de roster
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    397
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 397
    Par défaut
    J'ai retenu la méthode de Smyley par soucis (nécessité?! ) de simplicité.
    Ce qui donne en VB et pour ceux que cela interresse:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Dim TB As New TextBlock()
    TB.Foreground = If(testcounter Mod 2 = 0, Brushes.Black, Brushes.DarkBlue)
    TB.Text = LabelTech.Content.ToString & "//" & LabelBase.Content.ToString 
    ListBox1.Items.Add(TB)
    Ma listbox ne contenant, pour l'instant, que du texte, l'utilisation de textblock est suffisament pertinente.
    Est-là vient ma seconde question, si je désire ajouter devant chaque item dans ma ListBox une image du genre petite icône, dois-je passer obligatoirement par le code Xaml? Sinon, comment faire? Et si oui, comment faire également?

    J'avoue ne pas avoir trop cherché pour l'instant par manque de temps et de sommeil, mais si une âme charitable pouvait me mettre sur la voie...

    En tout cas, merci à tous pour votre aide si précieuse.

    PS: je précise juste que pour les images ajoutées, je ne désire pas alterner la couleur, c'est juste pour le texte!

  10. #10
    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
    Citation Envoyé par roster Voir le message
    Est-là vient ma seconde question, si je désire ajouter devant chaque item dans ma ListBox une image du genre petite icône, dois-je passer obligatoirement par le code Xaml? Sinon, comment faire? Et si oui, comment faire également?
    Tu peux le faire par code mais ce sera plus simple en XAML. Tu devras pour cela utiliser les DataTemplates et c'est là que mon idée précédentes entre en jeux

  11. #11
    Membre chevronné Avatar de roster
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    397
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 397
    Par défaut
    Citation Envoyé par Thomas Lebrun Voir le message
    Tu peux le faire par code mais ce sera plus simple en XAML. Tu devras pour cela utiliser les DataTemplates et c'est là que mon idée précédentes entre en jeux
    Ok Chef, j'y vais de ce pas appronfondir les datatemplates...

  12. #12
    Expert confirmé
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Par défaut
    Ou alors tu fais simplement un UserControl avec tout ce qu'il te faut
    Les deux méthodes sont tout aussi rapides, même si le DataTemplate est plus élégant au sens WPF ...

  13. #13
    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 : 44
    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
    Citation Envoyé par roster Voir le message
    Ok Chef, j'y vais de ce pas appronfondir les datatemplates...
    De toutes façons tu peux difficilement faire du WPF sans comprendre le mécanisme des templates... ou alors tu ne pourras jamais exploiter WPF à fond

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

Discussions similaires

  1. Changer la police et couleur d'un texte dans une listbox
    Par kaisser dans le forum Windows Forms
    Réponses: 5
    Dernier message: 03/11/2009, 19h11
  2. Couleur texte dans ListBox disabled
    Par inc002 dans le forum Composants VCL
    Réponses: 3
    Dernier message: 06/08/2007, 12h47
  3. Réponses: 5
    Dernier message: 30/05/2006, 16h04
  4. Centrer un texte dans ListBox, dans OnDrawItem
    Par Sunchaser dans le forum C++Builder
    Réponses: 3
    Dernier message: 21/03/2005, 02h46
  5. modifier la couleur d'un texte dans un input text
    Par mic79 dans le forum Mise en page CSS
    Réponses: 8
    Dernier message: 05/01/2005, 17h45

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