Verwenden der Datenbindung zum Starten von Animationen in WPF

8

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?

    
Mark Heath 13.11.2008, 13:29
quelle

3 Antworten

9

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.

    
Mark Heath 31.12.2008, 11:12
quelle
2

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ügen

XAML: (das geht direkt in den Wurzelknoten)

%Vor%

ViewModel:

%Vor%

Schließlich muss das Viewmodel von "INotifyPropertyChanged"

erben     
CowboyBebop 12.05.2011 15:54
quelle
1

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

quelle

Tags und Links