我已經創建了一個MainMenu和兩個動畫:ZoomIn & ZoomOut。 MainMenu將充滿帆布,每個包含圖標。我正在嘗試做的是點擊一個按鈕,當前可見面板會丟失ZoomOut並單擊面板出現ZoomIn。WPF選擇應該從代碼背後播放故事板動畫的控件
到目前爲止,我已經成功地從調用代碼的動畫使用這背後:
Dim ZoomOut As Storyboard = DirectCast(FindResource("storyZoomOut"), Storyboard)
ZoomOut.Begin()
但現在我需要的技術控制動畫。也可以同時對兩個不同的對象進行動畫處理嗎?像Canvas1 ZoomOut和Canvas2 ZoomIn在同一時間嗎?
<Storyboard x:Key="storyZoomOut">
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="pnlCompras">
<EasingDoubleKeyFrame KeyTime="0:0:0.1" Value="0.8"/>
<EasingDoubleKeyFrame KeyTime="0:0:0.2" Value="0.6"/>
<EasingDoubleKeyFrame KeyTime="0:0:0.3" Value="0.4"/>
<EasingDoubleKeyFrame KeyTime="0:0:0.4" Value="0.2"/>
<EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="0.0"/>
</DoubleAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)" Storyboard.TargetName="pnlCompras">
<EasingDoubleKeyFrame KeyTime="0:0:0.1" Value="1.04"/>
<EasingDoubleKeyFrame KeyTime="0:0:0.2" Value="1.09"/>
<EasingDoubleKeyFrame KeyTime="0:0:0.3" Value="1.15"/>
<EasingDoubleKeyFrame KeyTime="0:0:0.4" Value="1.3"/>
</DoubleAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)" Storyboard.TargetName="pnlCompras">
<EasingDoubleKeyFrame KeyTime="0:0:0.1" Value="1.04"/>
<EasingDoubleKeyFrame KeyTime="0:0:0.2" Value="1.09"/>
<EasingDoubleKeyFrame KeyTime="0:0:0.3" Value="1.15"/>
<EasingDoubleKeyFrame KeyTime="0:0:0.4" Value="1.3"/>
</DoubleAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.X)" Storyboard.TargetName="pnlCompras">
<EasingDoubleKeyFrame KeyTime="0:0:0.1" Value="0"/>
</DoubleAnimationUsingKeyFrames>
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)" Storyboard.TargetName="pnlCompras">
<EasingDoubleKeyFrame KeyTime="0:0:0.1" Value="0"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
感謝大家的幫助!
只是要清楚,我有不同的畫布控制每一個都在另一個之上。並且將使用IsVisible屬性來使他們查看。 – CogentP 2013-03-16 15:33:01
您可以通過在控件上調用[BeginAnimation](http://msdn.microsoft.com/zh-cn/library/ms590761.aspx)來直接爲屬性設置動畫效果,而不是使用Storyboard。如果故事板包含多個動畫,這當然是不切實際的。如果您發佈故事板的XAML,我們可能會發現。 – Clemens 2013-03-16 16:18:00
是的,它包含多個動畫,不透明度和大小。還有一個位置,我可以很容易地刪除,因爲它什麼都不做。 – CogentP 2013-03-16 16:21:09