Amol Borkar
Amol Borkar

Reputation: 2609

Canvas not suppported in WPF project?

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.

Upvotes: 1

Views: 169

Answers (2)

Clemens
Clemens

Reputation: 128106

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>

Upvotes: 2

Reza ArabQaeni
Reza ArabQaeni

Reputation: 4908

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

Upvotes: 1

Related Questions