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 de Fond d'un listView


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2
    Par défaut Couleur de Fond d'un listView
    Bonjour,
    J'ai un listView à 2 colonnes. Une colonne à TextBox et une autre à Combobox.
    J'ai 2 boutons pour créer les données de la listView.
    A chaque fois que je clique sur les boutons, je rajoute une ligne dans ma listeView. J'aimerai pouvoir personnaliser la couleur de fond de la ligne créée.
    Par exemple, si je clique le bouton1, la couleur de fond de la ligne créée est en jaune et si je clique sur le bouton2, la couleur de fond de la ligne créée est en vert.
    Est-ce possible?
    Merci
    PS: Je travaille en C#

  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
    Il te "suffit" de jouer sur le style de la ligne ajoutée. Dans les ressources de ton application, tu définit 2 styles applicable à des ListViewItem.

    Dans ton code, sur le clic des boutons, tu créés des ListViewItem et, suivant le clic, tu accèdes au style des ressources adéquat

  3. #3
    Membre habitué
    Inscrit en
    Mai 2008
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 13
    Par défaut
    un truc dans le genre

    Code xml : 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
     
    <Window.Resources>
            (…)
     
            <Style TargetType=”{x:Type ListViewItem}BasedOn=”{StaticResource ListViewItemStyleBase}x:Key=”ListViewItemStyle1″>
                <Setter Property=”Background” Value=”White” />
            </Style>
     
            <Style TargetType=”{x:Type ListViewItem}BasedOn=”{StaticResource ListViewItemStyleBase}x:Key=”ListViewItemStyle2″>
                <Setter Property=”Background” Value=”AliceBlue” />
            </Style>
     
            <local:ListViewItemStyleSelector x:Key=”ListViewItemStyleSelector” />
        </Window.Resources>
     
        <ListView ItemContainerStyleSelector=”{StaticResource ListViewItemStyleSelector}()>

    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
     
    public class ListViewItemStyleSelector : StyleSelector
        {
            private int i = 0;
            public override Style SelectStyle(object item, DependencyObject container)
            {
                // makes sure the first item always gets the first style, even when restyling
                ItemsControl ic = ItemsControl.ItemsControlFromItemContainer(container);
                if (item == ic.Items[0])
                {
                    i = 0;
                }
                string styleKey;
                if (i % 2 == 0)
                {
                    styleKey = “ListViewItemStyle1″;
                }
                else
                {
                    styleKey = “ListViewItemStyle2″;
                }
                i++;
                return (Style)(ic.FindResource(styleKey));
            }
        }
    pour un styling en fonction de la parité de l'index.

    Dans ton cas tu peut envisager de faire des tests sur ton item, s'il vérifie la propriété Machin = type1 alors style1 sinon style2...

    par exemple

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <Window.Resources>
            <Style TargetType=”{x:Type ListViewItem}BasedOn=”{StaticResource ListViewItemStyleBase}x:Key=”ListViewItemStyle1″>
                <Setter Property=”Background” Value=”White” />
            </Style>
     
            <Style TargetType=”{x:Type ListViewItem}BasedOn=”{StaticResource ListViewItemStyleBase}x:Key=”ListViewItemStyle2″>
                <Setter Property=”Background” Value=”AliceBlue” />
            </Style>
            <local:ListViewItemStyleSelector x:Key=”ListViewItemStyleSelector”  KeyStyle1="ListViewItemStyle1" KeyStyle2="ListViewItemStyle2" KeyStyleDefault="ListViewItemStyle2"/>
        </Window.Resources>

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    public class ListViewItemStyleSelector : StyleSelector
        {
            protected string _keyStyle1;
            protected string _keyStyle2;
            protected string _keyStyleDefault;
     
            public string KeyStyle1
            {
                get { return _keyStyle1; }
                set { _keyStyle1 = value; }
            }
     
            public string KeyStyle2
            {
                get { return _keyStyle2; }
                set { _keyStyle2 = value; }
            }
     
            public string KeyStyleDefault
            {
                get { return _keyStyle2; }
                set { _keyStyle2 = value; }
            }
     
            public override Style SelectStyle(object item, DependencyObject container)
            {
                BusinessObject businessObject = item as BusinessObject; // en récupérant ton objet
                string key = null;
                switch (businessObject.Category) // suivant le critère sur ton objet
                {
                    case 1:
                        key = this.KeyStyle1;
                        break;
                    case 2:
                        key = this.KeyStyle2;
                        break;
                    default:
                        key = this.KeyStyleDefault;
                }
                ItemsControl ic = ItemsControl.ItemsControlFromItemContainer(container);
                return (Style)ic.FindResource(key);
            }
    }
    solution tiré de l'excellent blog de Beatriz Costa http://www.beacosta.com/blog/?cat=9

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2
    Par défaut
    Merci pour ton aide Raphael***
    Cela m'a beaucoup aidé.
    Je n'arrive pas à adapter la méthode "public override Style SelectStyle(object item, DependencyObject container)" pour mon cas.
    J'ai pensé de pouvoir accéder au style des ressources à partir du clik du bouton mais ce n'est pas réussi.
    Genre du :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     private void button1_Click(object sender, RoutedEventArgs e)
            {
                ListViewItem listViewITem = new ListViewItem();
                listViewITem.StyleProperty......
    //ou         
                listViewITem.style.....
            }
    Merci.

Discussions similaires

  1. TDBGRID - Couleur de fond d'une seule cellule
    Par cgo dans le forum Bases de données
    Réponses: 5
    Dernier message: 11/09/2009, 10h16
  2. listview + couleur de fond
    Par cortex59 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 27/06/2008, 16h23
  3. Changer la couleur de fond cellules ListView
    Par mpereg dans le forum Général VBA
    Réponses: 0
    Dernier message: 24/03/2008, 11h48
  4. [C# 2.0] Couleur de fond dans une listView
    Par OtI$ dans le forum Windows Forms
    Réponses: 3
    Dernier message: 07/02/2007, 14h50
  5. Réponses: 2
    Dernier message: 21/10/2006, 20h58

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