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 :

LinearGradientBrush dans un Trigger


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de annalady
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 169
    Par défaut LinearGradientBrush dans un Trigger
    Hello

    Je voudrais changer le style d'un bouton sur lequel on a cliqué (pas juste pendant le clic, je veux que le style soit conservé après le clic)

    J'ai écrit cette méthode dans mon code C#, que j'appelle lors de l'élément Button_Click :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
            private void SetClickedButtonStyle(Button button)
            {
                LinearGradientBrush background = new LinearGradientBrush();
                background.GradientStops.Add(new GradientStop(Colors.White, 0));
                background.GradientStops.Add(new GradientStop(Color.FromRgb(183, 216, 237), 1));
                button.Background = background;
     
                SolidColorBrush border = new SolidColorBrush();
                border.Color = Color.FromRgb(60, 127, 177);
                button.BorderBrush = border;
                button.BorderThickness = new Thickness(1);
            }
    Je voulais savoir s'il était possible de faire la même chose en WPF, dans un trigger. J'ai tenté ça (inspiré de la page http://msdn.microsoft.com/en-us/library/ms748815.aspx) :

    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
     
    <Button.Background>
    <LinearGradientBrush>
    <GradientStop x:Name="GradientStop1" Color="White" />
    <GradientStop x:Name="GradientStop2" Color="White" />
    </LinearGradientBrush>
     
    </Button.Background>
    <Button.Triggers>
    <EventTrigger RoutedEvent="Button.Click">                                    
    <EventTrigger.Actions>
    <BeginStoryboard>
    <Storyboard>
     
    <ColorAnimation Storyboard.TargetName="GradientStop1"
    Storyboard.TargetProperty="Color" To="White" />
     
    <ColorAnimation Storyboard.TargetName="GradientStop2"
    Storyboard.TargetProperty="Color">
    <ColorAnimation.To>
    <Color R="183" G="216" B="237" />
    </ColorAnimation.To>
    </ColorAnimation>
     
    <ColorAnimation Storyboard.TargetProperty="(Control.BorderBrush).(SolidColorBrush.Color)">
    <ColorAnimation.To>
    <Color R="60" G="127" B="177" />
    </ColorAnimation.To>
    </ColorAnimation>
     
    </Storyboard>
    </BeginStoryboard>                                        
    </EventTrigger.Actions>                                    
    </EventTrigger>
    </Button.Triggers>
    Mais bon apparemment c'est pas la bonne façon vu que ça ne change rien lors du clic. Est-ce qu'il faut bien passer par un storyboard pour faire ce genre de choses ?

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Par défaut
    Salut,

    chez moi, il y a un changement lors du clic, mais il revient sur un background blanc à la fin. Après si tu mets un offset pour GradientStop1 et GradientStop2 (comme tu l'as fait dans le code c#), le dégradé bleu reste.
    D'ailleurs tu n'as pas tout repris dans ton animation pour avoir le même résultat (c'est peut-être voulu de ta part ?)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 169
    Par défaut
    Etrange... Tu es sous vista ou sous xp ? (et si tu es sous xp, tu utilise le thème "Aero" ?)

    Je vais essayer de rajouter les offset dans le code wpf

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Par défaut
    J'ai fait le test sur un xp (pas de thème aero). Par contre, je suis pas convaincu que les différentes config possibles donnent un résultat différent (en tout cas j'espère car ça pourrait être ennuyant...)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 169
    Par défaut
    Bon apparemment il suffisait de mettre la composante "alpha" de la couleur à 255 :

    <Color A="255" R="183" G="216" B="237" />
    pour le GradientStop2

    <Color A="255" R="60" G="127" B="177" />
    pour le BorderBrush

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 18/10/2004, 16h18
  2. Recuperer derniere valeur modifiée dans un trigger
    Par xabs dans le forum Développement
    Réponses: 2
    Dernier message: 06/08/2004, 16h22
  3. RAZ GENERATOR dans un trigger
    Par kase74 dans le forum SQL
    Réponses: 2
    Dernier message: 08/09/2003, 18h43
  4. select dans un trigger sous Postgresql
    Par kastor_grog dans le forum Requêtes
    Réponses: 1
    Dernier message: 03/09/2003, 17h00
  5. [PostgreSQL] Refus de STATEMENT dans un trigger
    Par alex2205 dans le forum Requêtes
    Réponses: 3
    Dernier message: 10/03/2003, 12h51

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