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 :

Style ListViewItem impossible de modifier le background


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2008
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 44
    Par défaut Style ListViewItem impossible de modifier le background
    Bonjour,

    J'ai besoin de redéfinir la couleur du background de mes ListViewItems via le code C#. Cela fonctionne bien avec le style par défaut. Mais il me faut un style personnalisé et à partir du moment ou je change le style impossible de modifier le background via le code C#.


    Voici le xaml de mon style :

    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
    17
    18
    19
    20
     
    <Style x:Key="{x:Type ListViewItem}" TargetType="ListViewItem">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="ListViewItem">
                        <Border Name="Border" Padding="2" SnapsToDevicePixels="True" Background="Transparent">
                            <GridViewRowPresenter VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
                        </Border>
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsSelected" Value="true">
                                <Setter TargetName="Border" Property="Background" Value="Blue"/>
                            </Trigger>
                            <Trigger Property="IsSelected" Value="True">
                                <Setter Property="Foreground" Value="Yellow"/>
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>

    Et voici la façon dont je modifie le background en code C#

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    for (int i = 0; i < 50; i++)
    {
          ListViewItem lvi = new ListViewItem();
          lvi.Content = "test";
          lvi.Background = Brushes.Red;
          lv_name.Items.Add(lvi);
    }

    Est ce que quelqu'un peux me venir en aide, car j'ai absolument besoin de modifier le background de mes ListViewItem dans mon code C#

    Merci d'avance.

    Cordialement

  2. #2
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Par défaut
    pourquoi ne pas faire un binding?

  3. #3
    Membre averti
    Inscrit en
    Novembre 2008
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 44
    Par défaut
    Je ne sais pas faire un Binding pour modifier le Background.

    Pourrez tu m'aider. Mais je ne sais pas si peux fonctionner

  4. #4
    Membre très actif
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2010
    Messages : 657
    Par défaut
    comme en HTML , si tu précises une property directement dans l'objet , cette dernière surclasse tout style définit à l'exterieur de l'objet , j'ai passé des nuits blanches sur ce problème. Quand on définie un style ( et non directement la property ) à l'intérieur d'un object c'est pareil , la property surclasse tout.
    Donc premièrement ne rien déclarer dans ton objet si tu veux le modifier de l'exterieur( c'est ce que tu fais en C# dans ton exemple ).

    si je fais

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    <Label Background="Blue"/>

    impossible de surcharger le bleu avec un style.

    il faut faire


    puis créer un style externe .


    sinon si tu veux éviter tout code behind , il faut apprendre MVVM , un pattern très simple qui va faire toutes les générations d'objets visuels liées à tes données automatiquement grace au data binding.

  5. #5
    Membre averti
    Inscrit en
    Novembre 2008
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 44
    Par défaut
    J'ai essayé en supprimant la totalité des background et cela ne fonctionne pas quand même. Je comprends pas

  6. #6
    Membre très actif
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2010
    Messages : 657
    Par défaut
    Enlève x:Key="{x:Type ListViewItem}" déja et teste si cela fonctionne.
    A la place du border du controltemplate ,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     <Border Name="Border" Padding="2" SnapsToDevicePixels="True" Background="Transparent">
                            <GridViewRowPresenter VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
                        </Border>

    écrit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     <Border Name="Border" Padding="2" SnapsToDevicePixels="True" Background="Transparent">
                     <ContentPresenter/>
                        </Border>
    edit : corrigé /

Discussions similaires

  1. [AC-2007] Impossible de modifier un style de formulaire
    Par Coline.S dans le forum IHM
    Réponses: 3
    Dernier message: 23/02/2013, 13h13
  2. Impossible de modifier background-color de CalendarExtender
    Par paolo2002 dans le forum ASP.NET Ajax
    Réponses: 2
    Dernier message: 18/10/2012, 08h55
  3. Réponses: 2
    Dernier message: 05/10/2005, 15h27
  4. Réponses: 6
    Dernier message: 30/09/2005, 16h24
  5. Réponses: 11
    Dernier message: 30/08/2005, 09h31

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