2016-04-13 7 views
0

macht Ich habe eine Color in einer UWP Anwendung den Hintergrund eines TextBox zu animieren:RepeatBehavior nicht Animation Ende richtig

 animation = new ColorAnimation(); 
     animation.Duration = TimeSpan.FromMilliseconds(600); 
     animation.From = Colors.White; 
     animation.To = Color.FromArgb(255, 40, 40, 40); 
     animation.RepeatBehavior = new RepeatBehavior(2); 

     flashStoryBoard = new Storyboard(); 
     flashStoryBoard.Children.Add(animation); 

     Storyboard.SetTarget(animation, MyBox); 
     Storyboard.SetTargetProperty(animation, "(Panel.Background).(SolidColorBrush.Color)"); 

Wenn ich die Animation oben ausgeführt, die Animation in dem Text endet die einen weißen Hintergrund mit Farbe anstelle der erwarteten Standard (das ist die dunkle 40, 40, 40 Farbe ..). Wenn ich das Wiederholungsverhalten entferne, läuft die Animation gut, aber natürlich nur einmal. Es werden keine Beschleunigungsfunktionen angewendet. Wenn ich das Füllverhalten auf "Stopp" setze, erhalte ich am Ende der Animation einen flackernden Effekt.

Irgendwelche Ideen?

Antwort

1

Wenn ich die obige Animation ausführen, endet die Animation in der TextBox mit einer weißen Hintergrundfarbe anstelle der erwarteten Standard (das ist die dunkle 40, 40, 40 Farbe ..).

Ich kann dieses Problem nicht reproduzieren, bei meiner Seite endet es mit der Farbe "FF404040". Vielleicht können Sie ein neues leeres Projekt erstellen und Ihren gebuchten Code erneut versuchen. Oder Sie können Ihre Probe mit uns teilen.

Wenn ich das Füllverhalten auf stopp setze, bekomme ich am Ende der Animation einen flackernden Effekt.

Ich glaube, Sie versuchen, die TextBox ‚s Hintergrund von weiß bis dunkelgrau zweimal geändert zu machen, wenn die TextBox geladen wird, aber wenn gesetzt RepeatBehavior gleich oder mehr als zwei Mal, wird es noch einmal flackern sehr schnell in das Ende.

ich eine Abhilfe für dieses Szenario gefunden, es macht die Animation mit der Farbe „FF404040“ endet, und wird am Ende nicht flimmern:

Storyboard flashStoryBoard = new Storyboard(); 
ColorAnimation animation = new ColorAnimation(); 
animation.Duration = TimeSpan.FromMilliseconds(600); 
animation.To = Colors.White; 
animation.From = Color.FromArgb(255, 40, 40, 40); 
animation.RepeatBehavior = new RepeatBehavior(2); 
animation.AutoReverse = true; 
flashStoryBoard.Children.Add(animation); 
Storyboard.SetTarget(animation, MyBox); 
Storyboard.SetTargetProperty(animation, "(Panel.Background).(SolidColorBrush.Color)"); 
flashStoryBoard.Begin(); 

Wie Sie in meinem Code sehen können, tauschen ich die animation.To und die animation.From, und setzen Sie die AutoReverse Eigenschaft auf True. Da Ihre Animation Duration nur 0,6s ist, denke ich, dass diese Methode die Benutzererfahrung nicht beeinflusst und das Flimmerproblem lösen kann.

+0

Hallo Grace, Ihre Lösung erstellt nicht die gleiche Animation, die ich gemacht habe. Allerdings habe ich eine Lösung gefunden: Wenn ich das Wiederholungsverhalten auf 1,97 statt auf 2 setze, scheint die Animation korrekt zu funktionieren. Dies scheint ein Fehler im System zu sein ... Gibt es einen Ort, an dem dies richtig als Feedback gepostet werden könnte? – WJM

+0

@WJM, Wirklich? Gut zu wissen! Ich habe nicht einmal über eine solche Lösung nachgedacht, danke fürs Teilen. Ich melde dies bereits vor Tagen, aber Sie können es auch über das Windows-Feedback-Tool melden. Sie können dieses Tool finden, indem Sie die installierte App in Ihrer Windows 10-App durchsuchen, oder Sie können MSDN-Foren ausprobieren. –

Verwandte Themen