Search code examples
c#wpfanimationevent-triggers

TriggerAction object must be associated with one and only one trigger object


I defined BeginStoryboard object in resources in style.

In same style definition I would like use this BeginStoryboard object in 2 event triggers which fire animation.

It is possible that 2 different event triggers will use same object or I must define 2 different BeginStoryboard objects?

 <Style x:Key="SerialPoster" TargetType="Border">

        <Style.Resources>
            <BeginStoryboard x:Key="SerialPosterBeginStoryBoard">
                <Storyboard>
                    <DoubleAnimation Storyboard.TargetProperty="RenderTransform.Children[0].ScaleX"
                                     From="0"
                                     To="1"
                                     Duration="0:0:2"
                                     AccelerationRatio="1" />

                    <DoubleAnimation Storyboard.TargetProperty="RenderTransform.Children[0].ScaleY"
                                     From="0"
                                     To="1"
                                     Duration="0:0:2"
                                     AccelerationRatio="1" />

                    <DoubleAnimation Storyboard.TargetProperty="RenderTransform.Children[1].Angle"
                                     From="70"
                                     To="0"
                                     Duration="0:0:2" />
                </Storyboard>
            </BeginStoryboard>
        </Style.Resources>

        <!-- TriggerAction object must be associated with one and only one trigger object. -->
        <Style.Triggers>


            <EventTrigger RoutedEvent="Border.Loaded">
                <EventTrigger.Actions>
                    <StaticResource ResourceKey="SerialPosterBeginStoryBoard"/>
                </EventTrigger.Actions>
            </EventTrigger>


            <EventTrigger RoutedEvent="Border.MouseEnter">
                <EventTrigger.Actions>
                    <StaticResource ResourceKey="SerialPosterBeginStoryBoard" />
                </EventTrigger.Actions>
            </EventTrigger>

        </Style.Triggers>
    </Style>

Solution

  • Yes, it is possible to reference resource and so to reuse the resource instance at different places.

    No need to place the Storyboard inside Style.Resource just place it inside Window.