Menu

WPF Problème d'effet sur un bouton [Résolu]

Messages postés
20
Date d'inscription
jeudi 7 février 2019
Dernière intervention
18 février 2019
- - Dernière réponse : robunccm
Messages postés
20
Date d'inscription
jeudi 7 février 2019
Dernière intervention
18 février 2019
- 13 févr. 2019 à 20:16
Bonjour, à tous
mon soucis est visuel, je souhaite faire un changement de couleur sur click d'un bouton le programme ci-dessous fonctionne
        private void BtnAvant_Click(object sender, RoutedEventArgs e)
        {
            if (btnAvant.Background == Brushes.YellowGreen)
            {   btnAvant.Background = Brushes.Orange;   }
            else
            {   btnAvant.Background = Brushes.YellowGreen;  }
        }

et dans XAML j'ai
        <Button x:Name="btnAvant" Content="AVANT" HorizontalAlignment="Left" Height="24" Margin="120,39,0,0" VerticalAlignment="Top" Width="65" Click="BtnAvant_Click" />


ce qui me gène est que le bouton ne change de couleur que lorsque je quitte le bouton et également cet effet de clignotement donnant l'impression que l'action n'est pas prise en compte. Comment obtenir un effet similaire à WinForm ?

Merci de votre aide
Configuration: Windows / Chrome 72.0.3626.96
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
Messages postés
12751
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
18 février 2019
466
1
Merci
Bonsoir,

voici la réponse d'un collègue trop timide pour la poster lui-même.
Il faut écrire un style pour le bouton. Tu peux le stocker dans les window ressources, dans un fichier de style ou directement dans le bouton.

Ici c'est dans les window ressources
<Window x:Class="Test_WPF.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:def="Definition"
        xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
        xmlns:s="clr-namespace:System;assembly=mscorlib"
        
        Title="MainWindow" Height="719" Width="694">
    <Window.Resources>
        <Style x:Key="styleBouton" TargetType="{x:Type Button}">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type Button}">
                        <Border x:Name="Border"  CornerRadius="2"  BorderThickness="1" Background="{Binding Background, RelativeSource={RelativeSource TemplatedParent}}" BorderBrush="#404040">
                            <ContentPresenter Margin="2" HorizontalAlignment="Center" VerticalAlignment="Center" RecognizesAccessKey="True"/>
                        </Border>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </Window.Resources>


Et plus loin
        <Button Name="button" Content="Mon bouton" Style="{StaticResource styleBouton}" Background="Orange" Height="20" Width="100" Click="Button_Click"/>

Dire « Merci » 1

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CommentCaMarche

CCM 57682 internautes nous ont dit merci ce mois-ci

robunccm
Messages postés
20
Date d'inscription
jeudi 7 février 2019
Dernière intervention
18 février 2019
-
Merci Whismeril pour cette réponse aussi efficace qu’intéressante même si tu en partage la paternité.
Je suis passé en WPF suite à tes remarques dans un autre sujet et au début de lecture de tes tutos.
Je progresse dans l'approche objet et particulièrement en évitant de sollicités des contrôles distants.
La transcription de mon application est en bonne voie, énormément de code en moins, plus de performances et plus de lisibilité. XAML me plait bien j'ai une petite expérience en HTML et CSS cela m'aide. Le plus dur c'est WPF car des choses très simples hier sont aujourd'hui bien plus sophistiquées et nécessitent un gros apprentissage.
Nul doute que je vous solliciterai à nouveau je dis vous mais je pourrai dire tu car c'est chaque fois toi qui me répond.
Dernier point j'ai renoncé, pour l'instant aux contrôles utilisateur, car il me génèrent des impossibilités de création assez déroutante, mais lorsque je lance l'application elle a l'air de fonctionner, à suivre.
Commenter la réponse de Whismeril
Messages postés
12751
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
18 février 2019
466
1
Merci
Quelle version de Visual Studio utilise tu ?

Dire « Merci » 1

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CommentCaMarche

CCM 57682 internautes nous ont dit merci ce mois-ci

robunccm
Messages postés
20
Date d'inscription
jeudi 7 février 2019
Dernière intervention
18 février 2019
-
VS Community 2017 V15.9.5
Commenter la réponse de Whismeril
Messages postés
12751
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
18 février 2019
466
1
Merci
Ok, Community est gratuit, il bugue plus que les vetsion pro ou entreprise.

Quand tu ajoutes des controles (même des contrôles Framework), des converters, etc... Il arrives que VS te signale que ça n’existe pas, ça compile quand même et le programme fonctionne.

Mais ça n’est pas pratique car, il peut y avoir des erreurs partout et parfois la fenêtre ne s’affiche pas en mode design.

Ça vient d’un problème de cache, la solution préconisée par Microsoft, est de nettoyer la solution (j’ai pas VS sous les yeux ça doit être dans le menu générer), puis de régénérer la solution.
Ça ne marche pas à tous les coups.

La solution qui marche est de fermer VS, supprimer le dossier obj, et dans le dossier bin supprimer tous les fichiers générés par ton projet (si tu n’as que ça supprime bin, si tu as des fichiers de données, des dll que tu as mises à la main etc.. faut faire le tri). Ensuite tu relances VS, tu régénères et la normalement c’est bon.

Dire « Merci » 1

Heureux de vous avoir aidé ! Vous nous appréciez ? Donnez votre avis sur nous ! Evaluez CommentCaMarche

CCM 57682 internautes nous ont dit merci ce mois-ci

robunccm
Messages postés
20
Date d'inscription
jeudi 7 février 2019
Dernière intervention
18 février 2019
-
Merci bien J'essayerai une autre fois pour l'instant je fais des Window c'est assez souple ....
Commenter la réponse de Whismeril