VisualStateManager und generierte Übergänge

8

Gerade wenn ich denke, ich verstehe die VisualStateManager , etwas beweist mich falsch.

Ich verwende WPF 4 und versuche, ein Element mit der Maus einfach zu vergrößern und verkleinert es, wenn die Maus verlassen wird. Ich dachte, ich würde einfach jeden Staat in einem VisualStateGroup definieren und dann einen VisualTransition mit einem GeneratedDuration angeben:

%Vor%

Da ich ein catch-all VisualTransition mit einem GeneratedDuration habe, erwartete ich, dass der VSM Zwischenanimationen generiert. Das heißt, das Bewegen über das Steuerelement sollte die ScaleTransform -Eigenschaften von 1 bis 1,5 im Verlauf von 1 Sekunde animieren. Gleiches mit dem Ausziehen. Stattdessen gibt es eine Verzögerung von 1 Sekunde und dann fangen die ScaleTransform -Eigenschaften sofort an, auf 1.5 oder zurück auf 1 zu springen.

Wenn ich Übergänge wie folgt manuell spezifiziere, bekomme ich das gewünschte Verhalten:

%Vor%

Aber warum muss ich das tun? Ich dachte, der generelle Punkt der generierten Übergänge wäre, dass der Übergang erzeugt würde. Was versteh ich hier falsch?

UPDATE : Gemäss Ricks Antwort generiert Blend etwas, das funktioniert . So habe ich rückwärts gearbeitet und festgestellt, dass es tatsächlich die Tatsache ist, dass ich direkt auf das ScaleTransform referenziere, anstatt auf das UIElement , das es enthält. Ich habe mein XAML in das Folgende geändert und es funktioniert wie erwartet:

%Vor%

Scheint lächerlich (und ein offensichtlicher Fehler), aber es funktioniert.

Danke

    
cantloginfromwork 28.01.2011, 12:08
quelle

1 Antwort

6

Ich kann nicht sagen, dass ich vollständig verstehe, warum es nicht so funktioniert, wie wir es erwarten würden, aber in diesen Situationen können wir Expression Blend verwenden, um die Aufgabe auszuführen und zu sehen, welche Markierung es erzeugt. Ich habe das getan und hier ist ein funktionierendes Beispiel basierend auf Ihrem Beispiel:

%Vor%

Obwohl Blend eine allgemeinere Transformationsgruppe verwendet, besteht der Hauptunterschied darin, dass das Storyboard ein Element und einen Eigenschaftspfad durch dieses Element auf die Skalierungsfaktoren abzielt.

    
Rick Sladkey 29.01.2011, 00:04
quelle