toolkit:WrapPanel.Background in C# ändern
Hallo!
Ich bin schon seit 2 Tagem am verzweifeln... Ich versuche über einen EventHandler in C# die Hintergrundfarbe eines Wrappanels zu ändern. Nach langem Googlen kam ich zu der Lösung, dass das wohl über eine Animation mit einem Storyboard möglich wäre, obwohl deas Wrappanel einen einfachen Setter für die Hintergrundfarbe hat. Hab ich was übersehen oder muss man wirklich diesen komplizierten Weg gehen?
Oder gibt es in der XAML-Datei eine Möglichkeit, die Hintergrundfarbe an eine Funktion zu binden?
MfG und schonmal Danke für eure Hilfe
quotschmacher
AW: toolkit:WrapPanel.Background in C# ändern
Hi!
Hast das Problem gelöst gekriegt?
AW: toolkit:WrapPanel.Background in C# ändern
Ich habs jetzt nicht komplett durchgelesen aber vielleicht hilft dir das weiter:
http://social.msdn.microsoft.com/For...b-9f9909e987ea
AW: toolkit:WrapPanel.Background in C# ändern
Ich dachte eigentlich an einen Reload der Seite
Ob du dafür ein Storyboard machen musst weiß ich jetzt leider nicht
AW: toolkit:WrapPanel.Background in C# ändern
AW: toolkit:WrapPanel.Background in C# ändern
So mit o!
Habs jetzt hinbekommen. Für alle, die vor einem ähnlichen Problem stehen, ich habe mir hier Anregungen geholt und dann folgende Hilfsklasse implementiert:
public class AnimationHelper
{
public void ChangeBackground(UIElement target, Color targetColor)
{
ColorAnimation da = new ColorAnimation();
Brush start = (target as WrapPanel).Background;
da.From = (start as SolidColorBrush).Color;
da.To = targetColor;
da.Duration = TimeSpan.FromSeconds(0.5);
da.AutoReverse = false;
Storyboard.SetTargetProperty(da, new PropertyPath("(target.Background).(SolidColorBrush.Color)"));
Storyboard.SetTarget(da, target);
Storyboard sb = new Storyboard();
sb.Children.Add(da);
sb.Begin();
}
}
so dass ich im Eventhandler, der das Ändern des Hintergundes auslöst nur noch
AnimationHelper help = new AnimationHelper();
help.ChangeBackground(WrapPanelName, Wunschfarbe);
schreiben muss, um eine Animation von der aktuellen Farbe zur Wunschfarbe zu bekommen.
Wichtig: initial und wenn nicht anders definiert, hat das WrapPanel den Hintergrundbrush "null". In dieser Hilfsklasse ist keine Sonderbehandlung dafür. Ich habe meinem WrapPanel direkt in der XAML-Datei eine Hintergrundfarbe verpasst, um die NullPointerException zu umgehen.
Leider ist meine Methode hier noch recht statisch und nur für das WrapPanel nutzbar, da ein UIElement keinen Background hat...
Ich hoffe dennoch, es nützt irgendwem irgendwie mal...