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 :

ListView Item Background


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
    Mars 2005
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 192
    Par défaut ListView Item Background
    Bonjour

    J'utilise deux listviews bindé sur 2 objectDataProvider. Je voudrais surligner les éléments qui se trouvent dans les deux listview. Cependant je suis un peu perdu dans la manière de faire. Il semblerait que les datatrigger soient adaptées à cela. Pourriez vous me fournir une ébauche de code ou un lien car je n'ai rien trouvé pour le moment.
    Merci d'avance

  2. #2
    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 : 43
    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
    Le plus simple c'est sans doute d'utiliser un StyleSelector, qui vérifie si l'élément est dans les 2 collections, et renvoie le style correspondant

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 192
    Par défaut
    Cool, merci pour la réponse; Cependant j'ai un petit problème. j'ai suivi la méthode 3 du lien suivant :
    http://msdn.microsoft.com/fr-fr/library/ms750769.aspx

    Mais Je me retrouve avec une erreur lors de la déclaration du namespace.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <namespc:ListViewItemStyleSelector x:Key="myStyleSelector"/>
    'namespc' is an undeclared namespace.

    Comment faire une bonne déclaration du namespace ?

    Merci

  4. #4
    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 : 43
    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 richton95 Voir le message
    ''namespc' is an undeclared namespace.


    Comment faire une bonne déclaration du namespace ?
    En supposant que le préfixe "namespc" corresponde au namespace Foo.Bar, il faut mettre dans l'élement racine :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xmlns:namespc="clr-namespace:Foo.Bar"
    Et si c'est dans un autre assembly :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xmlns:namespc="clr-namespace:Foo.Bar;assembly=LeNomDeLAssembly"

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 192
    Par défaut
    Ca fonctionne ! Merci encore pour ton aide.
    Maintenant je me retrouve au pb suivant.
    via ma classe ci dessous, j'accède bien au propriété de ma listview1 via le "DependencyObject ".
    Aurais tu une idée pour récupérer ma listview2 afin de faire la comparaison entre le contenu des deux listes ?
    Merci d'avance

    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
     
     
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Windows.Controls;
    using System.Windows;
    using System.Windows.Media;
    using Rcb.ActiveDirectory.Objects;
     
    namespace ADManagementIHM.Styles
    {
        class UgmStyle : StyleSelector
        {
            public override Style SelectStyle(object item,
                DependencyObject container)
            {
                Style st = new Style();
                st.TargetType = typeof(ListViewItem);
                Setter backGroundSetter = new Setter();
                backGroundSetter.Property = ListViewItem.BackgroundProperty;
                ListView listView =
                    ItemsControl.ItemsControlFromItemContainer(container)
                      as ListView;
                ADObject adObj = (ADObject) listView.ItemContainerGenerator.ItemFromContainer(container);
                if (adObj.IsUserGroup())
                {
                    backGroundSetter.Value = Brushes.LightBlue;
                }
                else
                {
                    backGroundSetter.Value = Brushes.Beige;
                }
                st.Setters.Add(backGroundSetter);
                return st;
            }
        }
    }

  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 : 43
    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
    arf... j'avais pas pensé à ce léger détail

    Une solution pas super propre, mais qui devrait faire l'affaire : tu ajoutes à ton StyleSelector 2 propriétés (List1 et List2 par exemple) de type ListView (voire ItemsControl pour être plus générique), et tu les affectes à l'initialisation de ta fenêtre, après le InitializeComponent :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    UgmStyle myStyleSelector = FindResource("myStyleSelector") as UgmStyle;
    if (myStyleSelector != null)
    {
        myStyleSelector.List1 = listView1;
        myStyleSelector.List1 = listView2;
    }
    Ensuite dans la méthode SelectStyle, tu n'as plus qu'à utiliser les contrôles définis par ces propriétés

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

Discussions similaires

  1. listview item background
    Par jojo_ol76 dans le forum Composants graphiques
    Réponses: 6
    Dernier message: 08/04/2011, 23h27
  2. [C#] Listview item avec chaine tronquée
    Par heavydrinker dans le forum Windows Forms
    Réponses: 1
    Dernier message: 18/10/2006, 15h46
  3. Réponses: 5
    Dernier message: 12/08/2006, 20h35
  4. Réponses: 5
    Dernier message: 08/06/2006, 16h11
  5. ListView->Items->Clear() !!! Qques probl de perf
    Par Nicolas_a69 dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/08/2002, 11h49

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