WPF-MVVM-Eigenschaft Ändern-Animation
Ich bin auf der Suche für eine saubere Weg, um eine animation zu starten, haben sich die dynamischen Werte. Grundsätzlich will ich eine animation, wo sich ein element ändert die Breite auf der Grundlage der Daten von einem anderen element. Sagen, ich habe einen TextBlock, der die Eigenschaft Text ist Verbindlich. Wenn diese Eigenschaft sich ändert ich will ein visuelles element, sagen wir ein Rechteck, um unseren Willen zu tun, eine DoubleAnimation ändern Sie die Breite von vorherigen Wert auf den neuen Wert.
Ich versuche zu bleiben Weg von putting-code in mein view, wenn möglich. Ich habe mir in DataTriggers, aber Sie scheinen zu verlangen, dass Sie wissen, was das Wert sein würde wie ein Enum. In meinem Fall ist es nur den Wert ändern muss, um die trigger-ein storyboard und die animation würde anfangen müssen an der aktuellen(bisherigen) Wert und bewegen sich schön auf den neuen Wert.
Ideen. Vielleicht habe ich einfach verpasst, eine Eigenschaft.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist die Lösung, die ich endete mit. Zu tun, die Animation basiert auf Daten, die in meinem ViewModel habe ich eine DataTrigger. Unten ist mein Stil für das Steuerelement.
Könnten Sie erkunden mit Angefügte Eigenschaften, um hook up die notwendige Logik, um das Storyboard/Animation, die Sie wünschen.
Diese nicht unbedingt zu stoppen, müssen Sie code schreiben, aber es wird halten Sie es getrennt von der Ansicht und lassen Sie es wieder verwendet werden, über mehrere Ansichten.
Da die Eigenschaften geändert durch animation kann nicht festgelegt werden, außerhalb der animation 'Kontext', kam ich mit einer code-Lösung, da ich nicht tun konnte, das gleiche in XAML effektiv.
Wirklich, das Sie binden möchten
DoubleAnimation.ToProperty
zu denViewModel
Eigentum und animieren tatsächlichen Kontrolle. Das problem ist die animation fortgesetzt werden sollte, wennToProperty
geändert. Meine Lösung Kapseln alle diese Logik in einemMarkupExtenstion
die wraps einBinding
.Können Sie das gleiche tun mit der anderen animation Klassen zu animieren, andere Arten.