Reputation: 345
I try to change an animation when the triggers changes - but the old animation doesnt stop:
<TabControl>
<TabItem Header="Dummy"></TabItem>
<TabItem>
<TabItem.Header>
<Path Margin="20,0" Width="40.3295" Height="32.775" Stretch="Fill" Data="M 300 100 L 500 400 100 400 Z" Fill="Gold">
<Path.Style>
<Style TargetType="Path">
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type TabItem}}, Path=IsSelected}" Value="True">
<DataTrigger.EnterActions>
<BeginStoryboard>
<Storyboard Storyboard.TargetProperty="Fill.(SolidColorBrush.Color)">
<ColorAnimation RepeatBehavior="Forever" From="Green" To="Blue" Duration="0:0:1.5" />
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
<DataTrigger.ExitActions>
<BeginStoryboard>
<Storyboard FillBehavior="Stop" Duration="0" />
</BeginStoryboard>
</DataTrigger.ExitActions>
</DataTrigger>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type TabItem}}, Path=IsSelected}" Value="False">
<DataTrigger.EnterActions>
<BeginStoryboard>
<Storyboard Storyboard.TargetProperty="Fill.(SolidColorBrush.Color)">
<ColorAnimation RepeatBehavior="Forever" From="Red" To="Yellow" Duration="0:0:1.5" />
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
<DataTrigger.ExitActions>
<BeginStoryboard>
<Storyboard FillBehavior="Stop" Duration="0" />
</BeginStoryboard>
</DataTrigger.ExitActions>
</DataTrigger>
</Style.Triggers>
</Style>
</Path.Style>
</Path>
</TabItem.Header>
<TextBlock>4</TextBlock>
</TabItem>
</TabControl>
The animation for not-selected Tab keeps running. Does anybody know how to stop that? Thanks :)
Upvotes: 0
Views: 941
Reputation: 8634
Try this
<TabControl>
<TabItem Header="Dummy"></TabItem>
<TabItem>
<TabItem.Header>
<Path Margin="20,0" Width="40.3295" Height="32.775" Stretch="Fill" Data="M 300 100 L 500 400 100 400 Z" Fill="Gold">
<Path.Style>
<Style TargetType="Path">
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type TabItem}}, Path=IsSelected}" Value="True">
<DataTrigger.EnterActions>
<BeginStoryboard x:Name="start">
<Storyboard Storyboard.TargetProperty="Fill.(SolidColorBrush.Color)">
<ColorAnimation RepeatBehavior="Forever" From="Green" To="Blue" Duration="0:0:1.5" />
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
<DataTrigger.ExitActions>
<BeginStoryboard>
<Storyboard FillBehavior="Stop" Duration="0" />
</BeginStoryboard>
</DataTrigger.ExitActions>
</DataTrigger>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type TabItem}}, Path=IsSelected}" Value="False">
<DataTrigger.EnterActions>
<BeginStoryboard Name="UnselectedStoryboard">
<Storyboard Storyboard.TargetProperty="Fill.(SolidColorBrush.Color)">
<ColorAnimation RepeatBehavior="Forever" From="Red" To="Yellow" Duration="0:0:1.5" />
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
<DataTrigger.ExitActions>
<StopStoryboard BeginStoryboardName="UnselectedStoryboard" ></StopStoryboard>
</DataTrigger.ExitActions>
</DataTrigger>
</Style.Triggers>
</Style>
</Path.Style>
</Path>
</TabItem.Header>
<TextBlock>4</TextBlock>
</TabItem>
</TabControl>
Upvotes: 0
Reputation: 3448
To stop you use BeginStoryBoard as as the name indicates it invokes method Begin for Storyboard. In orded to stop use StopStoryBoard.
<DataTrigger Binding="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type TabItem}}, Path=IsSelected}" Value="True">
<DataTrigger.EnterActions>
<BeginStoryboard Name="start">
<Storyboard Storyboard.TargetProperty="Fill.(SolidColorBrush.Color)">
<ColorAnimation RepeatBehavior="Forever" From="Green" To="Blue" Duration="0:0:1.5" />
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
<DataTrigger.ExitActions>
<StopStoryboard BeginStoryboardName="start"/>
</DataTrigger.ExitActions>
</DataTrigger>
Upvotes: 5