我正在做一個表面應用程序。 在那裏我有一個像公告板一樣的地方,裏面貼着新聞的小卡片。 點擊後,他們應該飛出董事會並擴大規模。 我的故事板運行良好,除了第一次運行。這不是一個平滑的動畫,但它立即縮放到最終大小,這與orientation-property一樣。只是中心屬性似乎表現正確。WPF Storyboard運行良好,除了第一次運行。爲什麼?
這是我的故事板的一個例子這樣做:
Storyboard stb = new Storyboard();
PointAnimation moveCenter = new PointAnimation();
DoubleAnimationUsingKeyFrames changeWidth = new DoubleAnimationUsingKeyFrames();
DoubleAnimationUsingKeyFrames changeHeight = new DoubleAnimationUsingKeyFrames();
DoubleAnimationUsingKeyFrames changeOrientation = new DoubleAnimationUsingKeyFrames();
moveCenter.From = News1.ActualCenter;
moveCenter.To = new Point(250, 400);
moveCenter.Duration = new Duration(TimeSpan.FromSeconds(1.0));
moveCenter.FillBehavior = FillBehavior.Stop;
stb.Children.Add(moveCenter);
Storyboard.SetTarget(moveCenter, News1);
Storyboard.SetTargetProperty(moveCenter, new PropertyPath(ScatterViewItem.CenterProperty));
changeWidth.Duration = TimeSpan.FromSeconds(1);
changeWidth.KeyFrames.Add(new EasingDoubleKeyFrame(266, KeyTime.FromTimeSpan(new System.TimeSpan(0, 0, 1))));
changeWidth.FillBehavior = FillBehavior.Stop;
stb.Children.Add(changeWidth);
Storyboard.SetTarget(changeWidth, News1);
Storyboard.SetTargetProperty(changeWidth, new PropertyPath(FrameworkElement.WidthProperty));
changeHeight.Duration = TimeSpan.FromSeconds(1);
changeHeight.KeyFrames.Add(new EasingDoubleKeyFrame(400, KeyTime.FromTimeSpan(new System.TimeSpan(0, 0, 1))));
changeHeight.FillBehavior = FillBehavior.Stop;
stb.Children.Add(changeHeight);
Storyboard.SetTarget(changeHeight, News1);
Storyboard.SetTargetProperty(changeHeight, new PropertyPath(FrameworkElement.HeightProperty));
changeOrientation.Duration = TimeSpan.FromSeconds(1);
changeOrientation.KeyFrames.Add(new EasingDoubleKeyFrame(0, KeyTime.FromTimeSpan(new System.TimeSpan(0, 0, 1))));
changeOrientation.FillBehavior = FillBehavior.Stop;
stb.Children.Add(changeOrientation);
Storyboard.SetTarget(changeOrientation, News1);
Storyboard.SetTargetProperty(changeOrientation, new PropertyPath(ScatterViewItem.OrientationProperty));
stb.Begin(this);
News1.Center = new Point(250, 400);
News1.Orientation = 0;
News1.Width = 266;
News1.Height = 400;
Pin1.Visibility = Visibility.Collapsed;
news1IsOutside = true;
Scroll1.IsEnabled = true;
這有什麼錯呢?
那麼,需要讓你困惑的一點是: 當我只是做正常的故事板,你無法移動scatterviewsitems(我忘了告訴你,他們是scatterviewitems,我想,我很抱歉。 ..)稍後。他們被困在他們的位置上。 所以我不得不添加「changeHeight.FillBehavior = FillBehavior.Stop;」。 但現在又出現了另一個問題: 項目跳回到它們來自的地方。 所以我不得不添加「News1.Center =新點(250,400);」的東西。 而這些並不是他們開始的觀點。他們從其他價值觀開始。 我有第二個故事板,相反。 – sofri 2010-06-16 06:39:18
因此,我第一次點擊該項目,它跳出來,第二次點擊將使它跳回到公告板。 所以它運作良好,但不是第一次點擊它。除了它跳出來,就像它應該。 希望我能更好地解釋這一次;) – sofri 2010-06-16 06:41:50
謝謝。現在我更好地理解了這個問題。我已經重寫了我的答案,以解釋發生了什麼以及如何解決它。 – 2010-06-16 16:43:27