Reputation: 2092
<Style x:Key="ScaleStyle" TargetType="{x:Type FrameworkElement}">
<Setter Property="RenderTransformOrigin" Value="0.5,0.5"/>
<Setter Property="RenderTransform">
<Setter.Value>
<ScaleTransform />
</Setter.Value>
</Setter>
<Style.Triggers>
<DataTrigger Binding="{Binding IsShowing}" Value="True">
<DataTrigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation From="0.5" To="1" Duration="0:0:0.2" Storyboard.TargetProperty="RenderTransform.ScaleX" />
<DoubleAnimation From="0.5" To="1" Duration="0:0:0.2" Storyboard.TargetProperty="RenderTransform.ScaleY" />
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
</DataTrigger>
<DataTrigger Binding="{Binding IsShowing}" Value="False">
<DataTrigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation To="0.5" Duration="0:0:0.1" Storyboard.TargetProperty="RenderTransform.ScaleX"/>
<DoubleAnimation To="0.5" Duration="0:0:0.1" Storyboard.TargetProperty="RenderTransform.ScaleY"/>
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
</DataTrigger>
</Style.Triggers>
</Style>
Now it always starts the second data trigger, while it should start the first one , because the actual value of IsShowing is True, untill i press close button, so i dont know why this is ignoring that value and it always fires the second datatrigger.
Any help would be appreciated. Thank you :)
Upvotes: 1
Views: 2680
Reputation: 81313
Instead of creating another trigger, put other Storyboard in DataTrigger.ExitActions
and it will work fine.
<DataTrigger Binding="{Binding IsShowing}" Value="True">
<DataTrigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation From="0.5" To="1" Duration="0:0:0.2"
Storyboard.TargetProperty="RenderTransform.ScaleX" />
<DoubleAnimation From="0.5" To="1" Duration="0:0:0.2"
Storyboard.TargetProperty="RenderTransform.ScaleY" />
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
<DataTrigger.ExitActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation To="0.5" Duration="0:0:0.1"
Storyboard.TargetProperty="RenderTransform.ScaleX"/>
<DoubleAnimation To="0.5" Duration="0:0:0.1"
Storyboard.TargetProperty="RenderTransform.ScaleY"/>
</Storyboard>
</BeginStoryboard>
</DataTrigger.ExitActions>
</DataTrigger>
Upvotes: 1
Reputation: 8654
Try this
<Style x:Key="ScaleStyle" TargetType="{x:Type FrameworkElement}">
<Style.Triggers>
<DataTrigger Binding="{Binding IsShowing,RelativeSource={RelativeSource Self}}" Value="True">
<Setter Property="RenderTransform">
<Setter.Value>
<ScaleTransform ScaleX="1" ScaleY="1" />
</Setter.Value>
</Setter>
</DataTrigger>
<DataTrigger Binding="{Binding IsShowing,RelativeSource={RelativeSource Self}}" Value="False">
<Setter Property="RenderTransform">
<Setter.Value>
<ScaleTransform ScaleX="0.1" ScaleY="0.1" />
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
Upvotes: 0