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 :

Couleurs d'un bouton [Débutant]


Sujet :

Windows Presentation Foundation

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Inscrit en
    Juin 2011
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juin 2011
    Messages : 6
    Par défaut Couleurs d'un bouton
    Bonjour,
    J'utilise un "button" ou plutôt un "SurfaceButton" (développement d'application avec le sdk surface 2.0).

    J'aimerai que lorsque je touche (click) le bouton, il passe en rouge, mais revienne directement à sa couleur d'origine par la suite. (Il clignote une fois rouge quand je clique dessus). Comme pour indiquer que l'utilisateur a choisi le mauvais bouton, on le fait clignoter en rouge pour lui montrer que c'est une erreur.

    Pour l'instant j'ai ça, mais évidemment, le rouge reste une fois le click effectué...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
                SurfaceButton sb = new SurfaceButton();
                sb.Name = "Error";
                sb.Background = Brushes.Transparent;
                sb.Click += new RoutedEventHandler(Error_Click);
     
            private void Error_Click(object sender, RoutedEventArgs e)
            {
                SurfaceButton button = sender as SurfaceButton;
                button.Background = Brushes.Red;
                button.Opacity = 0.20;
            }
    Je ne sais pas si j'ai été assez compréhensible, n'hésitez pas à demander des précisions si besoin.
    Merci de votre aide

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2009
    Messages
    2 056
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2009
    Messages : 2 056
    Par défaut
    Le mieux je pense, est d'utiliser un trigger en xaml.

    Bon vu que tu sembles instancier ton bouton en code behind, faut que tu trouve l'équivalent en code behind également, mais si tu comprends en xaml ça ne devrait pas poser de problème.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Juin 2011
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juin 2011
    Messages : 6
    Par défaut
    Merci de la réponse, mais aucun effet avec ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
        <UserControl.Resources>
            <Style x:Key="ErrorStyle">
                <Style.Triggers>
                    <Trigger Property="s:SurfaceButton.IsPressed" Value="True">
                        <Setter Property="s:SurfaceButton.Background" Value="Red"/>
                    </Trigger>
                </Style.Triggers>
            </Style>
        </UserControl.Resources>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sb.Style = this.Resources["ErrorStyle"] as Style;
    Ai-je fait des erreurs ?

  4. #4
    Membre éprouvé Avatar de Thrud
    Profil pro
    Développeur .NET
    Inscrit en
    Avril 2008
    Messages
    170
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Avril 2008
    Messages : 170
    Par défaut
    Bonjour,

    'Aucun effet', ça veut dire que ça ne change pas la couleur de fond du bouton ?

    Sinon, si tu veux que le bouton ne reste rouge qu'un certain temps, je pense qu'il faut utiliser une animation.
    Voici un exemple pour un bouton 'normal', mais ça doit pouvoir s'adapter pour un SurfaceButton.

    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
     
     <Window.Resources>
      <Storyboard x:Key="PushRedButton" Duration="00:00:01" FillBehavior="Stop">
       <ColorAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="button" Storyboard.TargetProperty="(Panel.Background).(GradientBrush.GradientStops)[1].(GradientStop.Color)">
        <SplineColorKeyFrame KeyTime="00:00:00" Value="#FFF3440C"/>
       </ColorAnimationUsingKeyFrames>
      </Storyboard>
     </Window.Resources>
     <Window.Triggers>
      <EventTrigger RoutedEvent="ButtonBase.Click" SourceName="button">
       <BeginStoryboard Storyboard="{StaticResource PushRedButton}" x:Name="PushRedButton_BeginStoryboard"/>
      </EventTrigger>
     </Window.Triggers>
     <Grid x:Name="LayoutRoot">
      <Button HorizontalAlignment="Left" Margin="94,110,0,0" VerticalAlignment="Top" Width="159" Height="33" Content="Button" x:Name="button"/>
     </Grid>

  5. #5
    Nouveau membre du Club
    Inscrit en
    Juin 2011
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juin 2011
    Messages : 6
    Par défaut
    Merci, j'ai finalement utilisé un DispatcherTimer.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    DispatcherTimer timerHG = new DispatcherTimer();
    timerHG.IsEnabled = true;
    timerHG.Interval = new TimeSpan(0, 0, 0, 0, 200);
    timerHG.Tick += new EventHandler(timerHG_Tick);
    Au clic sur le SurfaceButton :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    private void Error_Click(object sender, RoutedEventArgs e)
            {
                SurfaceButton button = sender as SurfaceButton;
                        button.Background = Brushes.Red;
                        timerHG.IsEnabled = true;
                        timerHG.Start();
            }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    private void timerHG_Tick(object sender, EventArgs e)
            {
                ErreurHG.Background = Brushes.Transparent;
                timerHG.Stop();
                timerHG.IsEnabled = false;
            }
    Merci à tous.

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

Discussions similaires

  1. Changer la couleur d'un bouton
    Par castel51 dans le forum GTK+ avec C & C++
    Réponses: 2
    Dernier message: 02/11/2006, 10h36
  2. Réponses: 4
    Dernier message: 31/07/2006, 16h18
  3. Changer la Couleur d'un bouton
    Par fpinter dans le forum VC++ .NET
    Réponses: 4
    Dernier message: 15/07/2006, 12h09
  4. changer la couleur d'un bouton
    Par xenos dans le forum Delphi
    Réponses: 20
    Dernier message: 24/05/2006, 17h10
  5. [JButton] getContenPane() et couleur sur les boutons
    Par harris_macken dans le forum Composants
    Réponses: 4
    Dernier message: 05/06/2005, 06h31

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