2015-07-25 1 views
1

Je suis en train d'animer une toile en utilisant WPF Storyboard et DoubleAnimationsUsingKeyFrames mon code ressemble à ceci:Canvas non pris en charge dans le projet WPF?

<Canvas x:Name="bgCanvas" Height="261" Canvas.Top="-262" Width="720"> 
      <Canvas.Background> 
       <ImageBrush ImageSource="Resources/backgroundBlurred.png" Stretch="UniformToFill"/> 
      </Canvas.Background> 
      <Canvas.Resources> 
       <Storyboard x:Key="bgAnim" x:Name="bgAnim"> 
        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(bgCanvas.Opacity)" Storyboard.Target="bgCanvas"> 
         <EasingDoubleKeyFrame KeyTime="0" Value="0" /> 
         <EasingDoubleKeyFrame KeyTime="1.5" Value="1"/> 
        </DoubleAnimationUsingKeyFrames> 
       </Storyboard> 
      </Canvas.Resources> 

J'utilise aussi Mahapps.Metro pour le projet. <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(bgCanvas.Opacity)" Storyboard.Target="bgCanvas"> est souligné par des lignes bleues et l'erreur lit: bgCanvas is not supported in a Windows Presentation Format (WPF) Application.

Je ne suis pas sûr que ce qui est faux avec le code. BONUS: Est-ce la bonne façon d'animer un canevas dans WPF?

Désolé pour les questions de nub.

+1

Comment allez-vous commencer le storyboard? – Clemens

+0

@Clemens Umm. Je pense à une fonction (qui déclenche le storyboard) qui est invoquée par la construction de ma classe 'MainWindow'. Aucune suggestion?? –

Répondre

2

Vous pouvez lancer l'animation dans un EventTrigger sur l'événement Loaded du Canevas:

<Canvas ...> 
    <Canvas.Background> 
     <ImageBrush .../> 
    </Canvas.Background> 
    <Canvas.Triggers> 
     <EventTrigger RoutedEvent="Loaded"> 
      <BeginStoryboard> 
       <Storyboard> 
        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="Opacity"> 
         <EasingDoubleKeyFrame KeyTime="0" Value="0" /> 
         <EasingDoubleKeyFrame KeyTime="0:0:1.5" Value="1"/> 
        </DoubleAnimationUsingKeyFrames> 
       </Storyboard> 
      </BeginStoryboard> 
     </EventTrigger> 
    </Canvas.Triggers> 
</Canvas> 
1

Remplacer (bgCanvas.Opacity) avec (Canvas.Opacity)

+0

Ou mieux juste avec 'Opacity'. – Clemens

+0

Lorsque j'essaie 'Opacity' ou' Canvas.Opacity', le 'Storyboard.Target =" bgCanvas "' est souligné avec une erreur: 'TypeConverter pour 'Dependency Object' ne supporte pas la conversion depuis une chaîne. –

+0

Problème résolu en utilisant 'Storyboard.TargetName' à la place. Merci! –