ListView

Damien2888 Messages postés 4 Date d'inscription jeudi 14 février 2008 Statut Membre Dernière intervention 5 juin 2008 - 5 juin 2008 à 20:43
cs_gomoz Messages postés 134 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 23 décembre 2009 - 23 déc. 2009 à 22:41
Bonjour,

J'ai une ListView que j'ai bindé à des objets utilisateurs.

Je voudrais changer le background de certain item par le code? COmment puis je faire?

Merci.

Damien

5 réponses

cs_gomoz Messages postés 134 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 23 décembre 2009
18 déc. 2009 à 21:24
C'est un peu loin mais j'ai la même question... Une réponse peut etre ?


0
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 49
21 déc. 2009 à 10:43
AMICAL BONJOUR A TOI AUSSI

Je suppose que tu as essayé de modifier
maListView.Items[i].Background = Brushes.Red
?

Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé ! -
0
cs_gomoz Messages postés 134 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 23 décembre 2009
22 déc. 2009 à 12:56
Bonjour,

Merci pour cette piste. Je n'avais pas exploré les possibilités de Items. J'utilise ItemsSource et je pensais que c'était totalement désactivé alors que ce n'est pas le cas.

Ca m'a bien aidé pour trier et filtrer mes affichages, mais par contre je ne peux pas faire comme tu me dis. La propriété n'existe pas.

D'après mes recherche le mieux semble d'etre le template (car je souhaite mettre en évidence certains résultats en fonction de leurs paramètres). Auquel cas ca semblerait plus rapide d'exécution que ce que je voudrais faire (moins souple, mais plus rapide). Est-ce que tu confirme ? Ou bien j'ai mal regardé dans Items ?


PS: il manque un signe = dans ta signature, non ? Sinon tu risque de faire un tas d'erreurs :P
0
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 49
22 déc. 2009 à 13:50
Non, il ne manque pas de signe =.
Ma signature appelle la méthode try(). Elle attribue sa valeur (bool) à la variable succeed (d'où le simple "=") et il recommence la boucle tant que qu'elle n'est pas (!) vraie. On pourrait même marquer while (!try()) ; mais ça rendrait moins bien.
Ma signature combine appel de fonction, attribution de valeur, opération sur un booléen, test d'un booléen et boucle ^^

C'est sûr, en ce qui concerne les templates, que c'est mieux si tu arrives à les utiliser. Mais ce n'est pas forcément le plus simple. Personnellement, je n'ai pas une grande expérience en wpf, je risque de ne pas pouvoir grandement t'aider.

Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé ! -
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_gomoz Messages postés 134 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 23 décembre 2009
23 déc. 2009 à 22:41
J'ai trouvé finalement quelque chose de plutôt flexible :
public class ListViewItemStyleSelector : StyleSelector
    {
        public override Style SelectStyle(object item,
            DependencyObject container)
        {
            //ListView listView = (ListView)ItemsControl.ItemsControlFromItemContainer(container);
            CmdData data = (CmdData)item;
            //Propriétés affichage
            Style st = new Style();
            st.TargetType = typeof(ListViewItem);
            Setter backGroundSetter = new Setter();
            backGroundSetter.Property = ListViewItem.BackgroundProperty;


            switch (data.Etape)
            {
                case 3:
                    backGroundSetter.Value = Brushes.Gray;
                    break;
                case 1:
                default:
                    backGroundSetter.Value = Brushes.LightBlue;
                    break;
            }
            st.Setters.Add(backGroundSetter);
            return st;
        }
    }

<Window.Resources>
        <local:ListViewItemStyleSelector x:Key="myStyleSelector" />
    </Window.Resources>

(...)

<ListView ItemContainerStyleSelector="{DynamicResource myStyleSelector}">


SI j'avais voulu, il aurait aussi été possible de définir plusieurs styles "fixes" dans mon code XAML puis de les attribuer via le code C#. C'est expliqué dans la doc : http://msdn.microsoft.com/fr-fr/library/ms750769.aspx
0
Rejoignez-nous