Ich suche nach einem sauberen Weg, um eine Animation mit dynamischen Werten zu starten. Im Grunde möchte ich eine Animation machen, bei der ein Element die Breite basierend auf den Daten eines anderen Elements ändert. Angenommen, ich habe einen TextBlock, dessen Texteigenschaft bindend ist. Wenn sich diese Eigenschaft ändert, möchte ich ein visuelles Element sagen, ein Rectangle, um eine DoubleAnimation zu machen, die die Breite vom vorherigen Wert zum neuen Wert ändert.
Ich versuche, Code zu vermeiden, wenn es möglich ist. Ich habe DataTriggers betrachtet, aber sie scheinen zu verlangen, dass Sie wissen, wie der Wert sein würde, wie ein Enum. In meinem Fall ist es nur die Wertänderung, die ein Storyboard auslösen muss, und die Animation muss mit dem aktuellen (vorherigen) Wert beginnen und sich gut auf den neuen Wert bewegen.
Irgendwelche Ideen. Vielleicht habe ich gerade eine Immobilie vermisst.
Sie können die angefügten Eigenschaften verwenden, um die erforderliche Logik mit dem Storyboard / der Animation zu verknüpfen das du begehrst.
Das wird Sie nicht unbedingt davon abhalten, Code zu schreiben, aber es wird es von der Ansicht getrennt halten und erlauben, dass es über mehrere Ansichten wiederverwendet werden kann.
Eigentlich möchten Sie DoubleAnimation.ToProperty
an die Eigenschaft ViewModel
binden und das aktuelle Steuerelement animieren. Das Problem ist, dass die Animation fortgesetzt werden sollte, wenn ToProperty
geändert wurde. Meine Lösung kapselt all diese Logik in ein MarkupExtenstion
, das ein Binding
umschließt.
Sie können das gleiche mit anderen Animationsklassen tun, um andere Typen zu animieren.