2012-02-13 114 views
0

我想在我的一个应用程序中创建一个动画。动画UserControl:StoryBoard无法启动?

该动画是一个控件,它的资源中定义了一个StoryBoard,并在加载后启动该StoryBoard。这里的(有点剥离)XAML:

<UserControl x:Class="LernInsel.Resources.Assets.Water" x:Name="UserControl"> 
    <UserControl.Resources> 
    <Storyboard x:Key="BaseAnimation" x:Name="BaseAnimation" RepeatBehavior="Forever"> 
     <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="waveLeft"> 
      <EasingDoubleKeyFrame KeyTime="0:0:0.3" Value="0"/> 
      <EasingDoubleKeyFrame KeyTime="0:0:1.3" Value="0.45"/> 
      <EasingDoubleKeyFrame KeyTime="0:0:2.3" Value="0"/> 
     </DoubleAnimationUsingKeyFrames> 
     <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="waveRight"> 
      <EasingDoubleKeyFrame KeyTime="0:0:0.3" Value="0"/> 
      <EasingDoubleKeyFrame KeyTime="0:0:1.3" Value="0.45"/> 
      <EasingDoubleKeyFrame KeyTime="0:0:2.3" Value="0"/> 
     </DoubleAnimationUsingKeyFrames> 
     <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="waveLeft_Copy"> 
      <EasingDoubleKeyFrame KeyTime="0" Value="0"/> 
      <EasingDoubleKeyFrame KeyTime="0:0:1" Value="0.39"/> 
      <EasingDoubleKeyFrame KeyTime="0:0:2" Value="0"/> 
     </DoubleAnimationUsingKeyFrames> 
     <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="waveRight_Copy"> 
      <EasingDoubleKeyFrame KeyTime="0" Value="0"/> 
      <EasingDoubleKeyFrame KeyTime="0:0:1" Value="0.39"/> 
      <EasingDoubleKeyFrame KeyTime="0:0:2" Value="0"/> 
     </DoubleAnimationUsingKeyFrames> 
     <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="waveLeft_Copy1"> 
      <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="0"/> 
      <EasingDoubleKeyFrame KeyTime="0:0:1.5" Value="0.41"/> 
      <EasingDoubleKeyFrame KeyTime="0:0:2.5" Value="0"/> 
     </DoubleAnimationUsingKeyFrames> 
     <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="waveRight_Copy1"> 
      <EasingDoubleKeyFrame KeyTime="0:0:0.5" Value="0"/> 
      <EasingDoubleKeyFrame KeyTime="0:0:1.5" Value="0.41"/> 
      <EasingDoubleKeyFrame KeyTime="0:0:2.5" Value="0"/> 
     </DoubleAnimationUsingKeyFrames> 
     <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="waveLeft_Copy2"> 
      <EasingDoubleKeyFrame KeyTime="0:0:0.9" Value="0"/> 
      <EasingDoubleKeyFrame KeyTime="0:0:1.9" Value="0.35"/> 
      <EasingDoubleKeyFrame KeyTime="0:0:2.9" Value="0"/> 
     </DoubleAnimationUsingKeyFrames> 
     <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="waveRight_Copy2"> 
      <EasingDoubleKeyFrame KeyTime="0:0:0.9" Value="0"/> 
      <EasingDoubleKeyFrame KeyTime="0:0:1.9" Value="0.35"/> 
      <EasingDoubleKeyFrame KeyTime="0:0:2.9" Value="0"/> 
     </DoubleAnimationUsingKeyFrames> 
    </Storyboard> 
    </UserControl.Resources> 
<UserControl.Triggers> 
    <EventTrigger RoutedEvent="FrameworkElement.Loaded"> 
     <BeginStoryboard Storyboard="{StaticResource BaseAnimation}"/> 
    </EventTrigger> 
</UserControl.Triggers> 
    <Grid> 
    <Rectangle x:Name="Background" Fill="#FF0B5FBC" Height="88" VerticalAlignment="Top"/> 
    <Rectangle x:Name="waveLeft" Fill="{DynamicResource ResourceKey=waveBright}" Height="60" Margin="25.5,6,286.5,0" VerticalAlignment="Top" Opacity="0" RenderTransformOrigin="0.5,0.5"/> 
    <Rectangle x:Name="waveRight" Fill="{DynamicResource ResourceKey=waveBright}" Height="60" Margin="308.5,6,3.5,0" VerticalAlignment="Top" Opacity="0" RenderTransformOrigin="0.5,0.5"/> 
    <Rectangle x:Name="waveLeft_Copy" Fill="{DynamicResource ResourceKey=waveBright}" Height="60" Margin="-3.5,15,315.5,0" VerticalAlignment="Top" Opacity="0" RenderTransformOrigin="0.5,0.5"/> 
    <Rectangle x:Name="waveRight_Copy" Fill="{DynamicResource ResourceKey=waveBright}" Height="60" Margin="279.5,15,32.5,0" VerticalAlignment="Top" Opacity="0" RenderTransformOrigin="0.5,0.5"/> 
    <Rectangle x:Name="waveLeft_Copy1" Fill="{DynamicResource ResourceKey=waveBright}" Height="60" Margin="45.5,25,266.5,0" VerticalAlignment="Top" Opacity="0" RenderTransformOrigin="0.5,0.5"/> 
    <Rectangle x:Name="waveRight_Copy1" Fill="{DynamicResource ResourceKey=waveBright}" Height="60" Margin="0,25,-16.5,0" VerticalAlignment="Top" Opacity="0" RenderTransformOrigin="0.5,0.5"/> 
    <Rectangle x:Name="waveLeft_Copy2" Fill="{DynamicResource ResourceKey=waveBright}" Height="60" Margin="-3.5,38,315.5,0" VerticalAlignment="Top" Opacity="0" RenderTransformOrigin="0.5,0.5"/> 
    <Rectangle x:Name="waveRight_Copy2" Fill="{DynamicResource ResourceKey=waveBright}" Height="60" Margin="279.5,38,32.5,0" VerticalAlignment="Top" Opacity="0" RenderTransformOrigin="0.5,0.5"/> 
    </Grid> 
</UserControl> 

当我在我的窗口中创建一个这样的例子,这看起来很好的设计师,正在显示甚至动画。运行时,控件显示为单色框(背景色),但动画从不开始。你看到Blend创建触发器的方式有什么问题可能导致它无法工作?

非常感谢!

塞比

+0

我没有看到任何关键帧... – 2012-02-13 13:38:28

+0

对不起,这就是我的意思是剥离...我会更新帖子 – 2012-02-13 13:38:58

回答

0

无法重现此,考虑到waveBright在您UserControl可达的范围实际上被定义。这可能是该代码的唯一弱点。

+0

谢谢,这似乎是如此。有时你会遇到最愚蠢的陷阱...... – 2012-02-13 14:06:27