2009-11-25 27 views
11

que estaba buscando una manera de cambiar una imagen durante un guión gráfico, o más específicamente, cambie la propiedad Source de la imagen para que apunte a un nuevo recurso de imagen. Parece que hay un StringAnimationUsingKeyFrames y una DiscreteStringKeyFrame pero esto no funciona (por lo que puedo decir) ya que la propiedad Fuente de la imagen es de tipo ImageSourceCambiar una imagen durante la animación usando guión gráfico

Mi guión gráfico actual se parece a esto

<Storyboard x:Key="TransitionImage"> 
    <DoubleAnimationUsingKeyFrames 
     BeginTime="00:00:00" 
     Storyboard.TargetName="image" 
     Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleX)"> 
     <SplineDoubleKeyFrame KeyTime="00:00:00.7000000" Value="0.2"/> 
     <SplineDoubleKeyFrame KeyTime="00:00:01.5000000" Value="1"/> 
    </DoubleAnimationUsingKeyFrames> 
    <StringAnimationUsingKeyFrames 
     BeginTime="00:00:00" 
     Storyboard.TargetName="image" 
     Storyboard.TargetProperty="(Image.Source)"> 
     <!-- This does not work --> 
     <DiscreteStringKeyFrame KeyTime="00:00:00.7000000" Value="check_24.png"/> 
    </StringAnimationUsingKeyFrames> 
    <DoubleAnimationUsingKeyFrames 
     BeginTime="00:00:00" 
     Storyboard.TargetName="image" 
     Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)"> 
     <SplineDoubleKeyFrame KeyTime="00:00:00.7000000" Value="0.2"/> 
     <SplineDoubleKeyFrame KeyTime="00:00:01.5000000" Value="1"/> 
    </DoubleAnimationUsingKeyFrames> 
</Storyboard> 

y la imagen

<Image x:Name="image" 
     Source="delete_24.png" 
     Width="32" Height="32" 
     Margin="8" 
     RenderTransformOrigin="0.5,0.5"> 
    <Image.RenderTransform> 
     <TransformGroup> 
      <ScaleTransform/> 
      <SkewTransform/> 
      <RotateTransform/> 
      <TranslateTransform/> 
     </TransformGroup> 
    </Image.RenderTransform> 
</Image> 

¿Puedo cambiar el Source de la imagen como parte del guión gráfico o estoy fuera de suerte?

Respuesta

31

Bien, lo resolví yo mismo. Parece que tiene que usar el ObjectAnimationUsingKeyFrames y DiscreteObjectKeyFrame como se muestra a continuación:

<ObjectAnimationUsingKeyFrames 
    BeginTime="00:00:00" 
    Storyboard.TargetName="image" 
    Storyboard.TargetProperty="(Image.Source)"> 
    <DiscreteObjectKeyFrame KeyTime="00:00:00.7000000"> 
     <DiscreteObjectKeyFrame.Value> 
      <BitmapImage UriSource="check_24.png" /> 
     </DiscreteObjectKeyFrame.Value> 
    </DiscreteObjectKeyFrame> 
</ObjectAnimationUsingKeyFrames> 
Cuestiones relacionadas