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 :

[Wpf/Xaml] Style Conditionnel


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 19
    Par défaut [Wpf/Xaml] Style Conditionnel
    Bonjour à tous,

    J'aimerais savoir comment appliquer un Style suivant la valeur d'une propriété d'un objet, exemple : Si (propriété_objet==0) alors Je choisis le Style Style_1 (défini dans mon dictionnaire de ressources xaml) pour afficher mon objet.

    J'insiste sur le fait que c'est un bien un Style complet que je veux pouvoir affecter et non pas utiliser des datatriggers (ou multidatatriggers ou multitriggers) pour modifier partiellement les propriétés d'un style.


    Merci d'avance.

  2. #2
    Membre Expert Avatar de meziantou
    Homme Profil pro
    autre
    Inscrit en
    Avril 2010
    Messages
    1 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : autre
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 223

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 19
    Par défaut
    Bonjour Meziantou, merci d'avoir répondu, j'étais déjà tombé sur ces liens mais je n'arrive pas à les exploiter :
    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
     
    public class ListViewItemStyleSelector : 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;
            int index = 
                listView.ItemContainerGenerator.IndexFromContainer(container);
            if (index % 2 == 0)
            {
                backGroundSetter.Value = Brushes.LightBlue;
            }
            else
            {
                backGroundSetter.Value = Brushes.Beige;
            }
            st.Setters.Add(backGroundSetter);
            return st;
        }
    }
    Voici ce qu'il me faudrait :

    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
    {
        public override Style SelectStyle(object item, 
            DependencyObject container)
        {
            Style st = new Style();
            st.TargetType = typeof(ListViewItem);
     
            ListView listView = 
                ItemsControl.ItemsControlFromItemContainer(container) 
                  as ListView;
     
            if propriété_objet == 0)
            {
                JE CHOISIS LE STYLE STYLE_a
            }
            else if(propriété_objet==1)
            {
                 JE CHOISIS LE STYLE STYLE_b
            }
     
            return st;
        }
    }

  4. #4
    Membre Expert Avatar de meziantou
    Homme Profil pro
    autre
    Inscrit en
    Avril 2010
    Messages
    1 223
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : autre
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2010
    Messages : 1 223
    Par défaut
    Je t'avais mis un deuxième lien pour t'aider dans tes recherches. En effet on utilise plus souvent un DataTemplateSelector (qui ressemble étrangement au StyleSelector). Voila un autre lien qui lui utilise les DataTemplateSelector (donc il faut adapter un tout petit peu)
    http://www.switchonthecode.com/tutor...mplateselector

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 19
    Par défaut
    ça fonctionne Meziantou, merci encore.

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

Discussions similaires

  1. [Datatable] Style conditionnel sur une ligne
    Par Hikage dans le forum JSF
    Réponses: 2
    Dernier message: 06/06/2011, 17h28
  2. WPF, XAML, Un broblème avec mon Style TabControl
    Par sou_dj dans le forum Windows Presentation Foundation
    Réponses: 4
    Dernier message: 02/06/2011, 10h38
  3. [WPF - XAML] Style questions
    Par NeoKript dans le forum Windows Presentation Foundation
    Réponses: 3
    Dernier message: 15/01/2011, 19h10
  4. [WPF][Resources & styles] récupération d'un style xaml en C#?
    Par bakonu dans le forum Général Dotnet
    Réponses: 3
    Dernier message: 13/11/2007, 15h30
  5. [WPF-XAML] freeBrowser 1.0 - Système de skin
    Par GeffD dans le forum Windows Presentation Foundation
    Réponses: 25
    Dernier message: 30/01/2007, 15h54

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