Ich habe den folgenden Code, um dynamisch zu erstellen und eine Schaltfläche zu einem Panel hinzufügen:dynamisch ändern Schaltfläche Hintergrund in WPF erstellt
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);
Das Problem ist, dass wenn ich den Mauszeiger über die Schaltfläche bewegen, kehrt es zu sein vorheriger hellblauer Hintergrund. Nun, ich habe gelesen, dass ich einen mouseover-Button-Trigger benötige, aber ich habe keine Ahnung, wie ich das programmatisch nur für diesen Button machen soll, alleine. Grundsätzlich möchte ich, dass der Hintergrund sich auf bgMouseOverBrush
ändert, wenn der Mauszeiger darüber ist, und zurück zu bgBrush
, wenn dies nicht der Fall ist.
Nein, das funktioniert nicht. Offensichtlich überschreibt die Schaltfläche den im MouseEnter-Ereignishandler festgelegten Hintergrund, direkt nachdem er mit dem Auslöser der IsMouseOver-Abhängigkeitseigenschaft geändert wurde, der den Hintergrund auf den Standard-Chrome setzt. Ein Style-Trigger oder etwas ähnliches wird hier benötigt. –
Hallo Michael, ich habe tatsächlich mit den gleichen Gradientenwerten getestet und festgestellt, dass es gut funktioniert (Screen Captures an die Antwort angehängt). Sind Sie sicher, dass Sie die Style/Background-Werte nicht woanders zurücksetzen? –
Versuchen Sie dies mit Aero aktiviert unter Vista oder Windows 7? Ich verwende Windows 7 mit Aero aktiviert –