[英]How to animate a ProgressBar Value Property using Storyboard DoubleAnimation in Windows 8.1
[英]DoubleAnimation / Storyboard completes twice and resets animation value
使用比例轉換對面板進行縮放時,應用程序需要將面板重置為其原始大小。 為此,一個重置按鈕將啟動一個雙重動畫,該動畫將比例轉換從其初始值動畫化為1,這意味着面板將具有其原始值。
從視覺上看,面板被縮放回原始大小,但是動畫完成后,故事板的完成事件被引發兩次,並且一旦這兩個事件都被引發,縮放變換的值將被設置回動畫之前的值。 。
private void ResetButton_Click(object sender, RoutedEventArgs e)
{
if (!isReseting)
{
isReseting = true;
this.doubleAnimation = new DoubleAnimation(1, new Duration(new TimeSpan(0,0,0, 1)), FillBehavior.Stop);
this.resetStoryboard = new Storyboard();
resetStoryboard.Children.Add(doubleAnimation);
Storyboard.SetTarget(doubleAnimation, zoomSliderControl);
Storyboard.SetTargetProperty(doubleAnimation, new PropertyPath(RangeBase.ValueProperty));
resetStoryboard.RepeatBehavior = new RepeatBehavior(1);
resetStoryboard.Completed += new EventHandler(ResetStoryboardCompleted);
resetStoryboard.Begin();
}
}
private void ResetStoryboardCompleted(object sender, EventArgs e)
{
if (resetStoryboard != null)
{
//resetStoryboard.Stop(zoomSliderControl);
//resetStoryboard.Remove(zoomSliderControl);
}
resetStoryboard = null;
doubleAnimation = null;
isReseting = false;
}
例如,如果動畫前Slider控件的值(名為zoomSliderControl)為1.5,則它會按預期動畫設置為1,但是一旦兩次完成resetStoryBoard的完成事件,它將再次設置為1.5。
我已經嘗試調試該應用程序,並且在第二個ResetStoryboardCompleted方法確定該值設置為其原始值之后,因此我猜測我沒有正確配置情節提要或動畫。
顯然,情節提要的默認行為是一旦完成或 (?)停止,便恢復為原始值。 因此,解決此問題的方法是在情節提要完成時將zoomSliderControl的值設置為所需值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.