1

I'm trying to animate a canvas in WPF using Storyboard and DoubleAnimationsUsingKeyFrames my code goes something like this:

<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>

I'm also using Mahapps.Metro for the project. <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(bgCanvas.Opacity)" Storyboard.Target="bgCanvas"> is underlined by blue lines and the error reads: bgCanvas is not supported in a Windows Presentation Format (WPF) Application.

I'm not sure whats wrong with the code.

BONUS: Is this the right way to animate a canvas in WPF?

Sorry for the nub questions.

Amol Borkar
  • 2,321
  • 7
  • 32
  • 63

2 Answers2

2

You could start the animation in an EventTrigger on the Loaded event of the Canvas:

<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>
Clemens
  • 123,504
  • 12
  • 155
  • 268
1

Replace (bgCanvas.Opacity) with (Canvas.Opacity)

Reza ArabQaeni
  • 4,848
  • 27
  • 46