Ich versuche, eine einfache WPF-Anwendung anzupassen, um das Model-View-ViewModel-Muster zu verwenden. Auf meiner Seite habe ich ein paar Animationen:
%Vor%Momentan beginne ich die Animation im Code dahinter und kann das Abgeschlossene Ereignis abhören, um etwas zu tun, wenn es mit dem folgenden Code endet:
%Vor%Gibt es eine Möglichkeit, das Storyboard an mein ViewModel zu binden, so dass es bei einem vom ViewModel aufgerufenen Ereignis beginnt und nach Abschluss des ViewModels zurückrufen kann?
Ich hatte die Gelegenheit, diese Frage an Microsofts Josh Twist zu richten, der sich freundlicherweise die Zeit genommen hat, eine Antwort auf dieses Problem zu geben. Die Lösung besteht darin, ein DataTrigger
in Verbindung mit einer Enumeration im ViewModel zu verwenden, um das Storyboard zu starten. Dazu muss die Seite in ein ContentPresenter
eingefügt werden. Um mit der Beendigung der Animation fertig zu werden, war eine kleine Menge Code erforderlich, um einen Aufruf in ein ICommand
im ViewModel durchzuführen.
Lesen Sie Joshs Beitrag hier für eine vollständige Beschreibung der Lösung.
Ich habe dies getan, indem ich DataTrigger verwendet und an eine Eigenschaft in meinem ViewModel gebunden habe. Wenn die "FlashingBackGround" -Eigenschaft auf "ON" gesetzt wird, startet die Storyboard-Animation.
Achten Sie auch darauf, in Ihrem Projekt einen Verweis auf "Microsoft.Expression.Interactions"
einzufügenXAML: (das geht direkt in den Wurzelknoten)
%Vor%ViewModel:
%Vor%Schließlich muss das Viewmodel von "INotifyPropertyChanged"
erben Sie müssen ein EventTrigger
verwenden. Dieser Artikel über Animationen in WPF könnte helfen. Siehe auch die Routed-Ereignisübersicht auf der MSDN und
David Schmitt
13.11.2008 13:48
Tags und Links wpf data-binding mvvm animation