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 :

MultiBinding sur la propriété Foreground d'un label


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2007
    Messages : 246
    Par défaut MultiBinding sur la propriété Foreground d'un label
    Bonjour à tous,

    pour le besoin d'une application, je souhaite faire ressortir les mois qui ont une montant reconstitué différent du montant perçu. Donc si un des mois de l'année à le montant reconstitué différent du montant perçu, je met le mois en rouge.

    voici mon code XAML

    Code xaml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
                    <StackPanel Orientation="Horizontal">
                        <Label Width="70" Content="{Binding Path=MoisLong}" FontWeight="Medium" FontFamily="Arial" >
                            <Label.Foreground>
                                <MultiBinding Converter="{StaticResource ConverterMontantReconstitue}"  >
                                    <Binding ElementName="labelMoisMontantPercu" Path="Content" />
                                    <Binding ElementName="labelMoisMontantReconstitue" Path="Content" />
                                </MultiBinding>
                            </Label.Foreground>
                        </Label>

    et voici mon converter:

    Code c# : 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
     
     /// <summary>
        /// Couleur pour différencier les mois où le montant perçu est différent du montant reconstitue
        /// </summary>
        public class ConverterCouleurFont : IMultiValueConverter
        {
     
            public object Convert(object[] pValue, Type targetType, object pParam, System.Globalization.CultureInfo culture)
            {
                string couleur = "";
                if (pValue[0] != pValue[1])
                    couleur = "Red";
     
               return couleur;
     
            }
     
            public object[] ConvertBack(object pValue, Type[] targetTypes, object pParam, System.Globalization.CultureInfo culture)
            {
                throw new NotImplementedException();
            }
        }

    malheureusement ca ne fonctionne pas, le programme passe bien dans le converter mais il ne met pas en rouge le(s) mois concerné(s), il passe bien dans la condition egalement. J'ai mal compris le fontionnement du multi binding ?

  2. #2
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 22
    Par défaut
    Bonjour

    Foreground est un brush. Il faut donc que le converteur renvoie un SolidColorBrush.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SolidColorBrush brush = new SolidColorBrush(Color.Red);
    Cordialement
    Aurore

  3. #3
    Membre éclairé
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2007
    Messages : 246
    Par défaut
    Color.Red n'existe pas chez moi

  4. #4
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 22
    Par défaut
    pardon, Colors.Red

  5. #5
    Membre éclairé
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2007
    Messages : 246
    Par défaut
    j'ai essayé de faire ça:

    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
     
        /// <summary>
        /// Couleur pour différencier les mois où le montant perçu est différent du montant reconstitue
        /// </summary>
        public class ConverterCouleurFont : IMultiValueConverter
        {
     
            public object Convert(object[] pValue, Type targetType, object pParam, System.Globalization.CultureInfo culture)
            {
                SolidColorBrush brush = new SolidColorBrush();
                if (pValue[0] != pValue[1])
                    brush.Color = Colors.Red;
                else
                    brush.Color = Colors.Black;
     
                return brush.Color;
            }
     
            public object[] ConvertBack(object pValue, Type[] targetTypes, object pParam, System.Globalization.CultureInfo culture)
            {
                throw new NotImplementedException();
            }
        }
    mais ca ne fontionne pas non plus, tout reste en noir

  6. #6
    Membre averti
    Inscrit en
    Avril 2010
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 22
    Par défaut
    public object Convert(object[] pValue, Type targetType, object pParam, System.Globalization.CultureInfo culture)
    {
    SolidColorBrush brush = new SolidColorBrush();
    if (pValue[0] != pValue[1])
    brush.Color = Colors.Red;
    else
    brush.Color = Colors.Black;

    return brush.Color;
    }
    Non, il faut que l'objet retour de Convert soit le SolidColorBrush:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public object Convert(object[] pValue, Type targetType, object pParam, System.Globalization.CultureInfo culture)
            {
                SolidColorBrush brush = new SolidColorBrush();
                if (pValue[0] != pValue[1])
                    brush.Color = Colors.Red;
                else
                    brush.Color = Colors.Black;
     
                return brush;
            }

  7. #7
    Membre éclairé
    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Février 2007
    Messages : 246
    Par défaut
    Même en renvoyan l'objet brush ça ne fonctionne pas. Mon label se trouve dans une treeview, mais je ne pense pas que ça change quelque chose.

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

Discussions similaires

  1. Propriété des commandes ( bouton, label, check box )
    Par Macandre dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 11/07/2007, 20h43
  2. Réponses: 4
    Dernier message: 15/02/2007, 10h06
  3. Count sur une propriété d'un bean entité
    Par dmetzler dans le forum JSF
    Réponses: 11
    Dernier message: 14/02/2007, 21h35
  4. Grosse énigme sur les propriétés indexées
    Par chtiantoine dans le forum Struts 1
    Réponses: 3
    Dernier message: 10/12/2006, 19h13
  5. Réponses: 2
    Dernier message: 06/09/2006, 23h20

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