Je le code suivant pour créer dynamiquement et ajouter un bouton à un panneau:Modification dynamique créé l'arrière-plan bouton WPF
StackPanel topPanel=...;
Button button=new Button();
button.Content="New Button "+topPanel.Children.Count;
// Set button background to a red/yellow linear gradient
// Create a default background brush
var bgBrush=new LinearGradientBrush(new GradientStopCollection(
new GradientStop[] {new GradientStop(Color.FromRgb(255,255,200),0.5),
new GradientStop(Color.FromRgb(255,200,200),0.5)}));
// Create a more intense mouse over background brush
var bgMouseOverBrush=new LinearGradientBrush(new GradientStopCollection(
new GradientStop[] {new GradientStop(Color.FromRgb(255,255,100),0.5),
new GradientStop(Color.FromRgb(255,100,100),0.5)}));
// Set the button's background
button.Background=bgBrush;
// Dynamically, add the button to the panel
topPanel.Children.Add(button);
Le problème est que lorsque je déplace le curseur de la souris sur le bouton, il revient à son arrière-plan bleu clair. Maintenant, j'ai lu que ce dont j'ai besoin est un déclencheur de bouton de souris, mais je n'ai aucune idée de comment faire cela par programmation uniquement pour ce bouton, seul. Fondamentalement, je veux que son arrière-plan change à bgMouseOverBrush
lorsque le curseur de la souris est dessus et revenir à bgBrush
quand il ne l'est pas.
Non, cela ne fonctionne pas. Apparemment, le bouton remplace l'arrière-plan défini dans le gestionnaire d'événements MouseEnter juste après qu'il a été modifié avec le déclencheur de propriété de dépendance IsMouseOver, qui définit l'arrière-plan sur le chrome par défaut. Un déclencheur de style ou quelque chose comme ça est nécessaire ici. –
Salut Michael, j'ai effectivement testé avec les mêmes valeurs de dégradé et j'ai trouvé que ça marchait très bien (Screen Captures attaché à la réponse). Êtes-vous sûr de ne pas réinitialiser les valeurs Style/Background ailleurs? –
Essayez-vous ceci avec Aero activé sur Vista ou Windows 7? J'utilise Windows 7 avec Aero activé –