[C#] DependencyProperty nach einer Animation wieder händisch ändern

Mal wieder eine dieser Stolperfallen auf die ich immer und immer wieder reinfalle. Animiere ich in einer meiner Oberflächen eine DependencyProperty (z.B. Width, Height, Margin, Opacity usw.) und versuche diese irgendwann später händisch auf einen anderen Wert zu setzen, dann wird meine Änderung ignoriert und stoisch der letzte Wert der Animation gehalten. Das Verhalten ist zwar extrem nervig, aber dennoch korrekt, wenn man die DependencyProperty Präzedenzliste stets im Hinterkopf behält. Diese definiert nämlich welchen Wert eine DependencyProperty letztendlich besitzt, wenn deren Wert an unterschiedlichen Stellen gesetzt wurde (z.B. Template, Style, lokale Wertzuweisung oder eben Animation).

Da eine Animation eine höhere Präzedenz hat als mein lokal gesetzter Wert, kann ich hier so lange fluchen wie ich will, mein Margin bleibt auf (100,100,0,0).

Die Lösung des Problems liegt darin die Animation zunächst zu entfernen (auf Null zu setzen) und den Endwert der Animation danach noch einmal händisch zu übernehmen. Hierfür nutze ich einfach das Completed-Event

Kolja Engelmann

Technikfan, Freizeitprogrammierer, selbsternannter Toolking und vermutlich größter Drachenfan Deutschlands blogged hier die Lösungen zu IT-Problemen die ihm über den Weg laufen, kleine Softwaretools, nostalgische Anfälle und missbraucht das Ganze gern auch mal als privates Tagebuch und Fotoalbum.

Das könnte Dich auch interessieren...

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.