In a UserControl
I have a DP of type enum
(GroupStyle
of type eGroupStyle
) and a DP of type bool
(IsGrouped
). I need to begin some storyboard in all possible conditions. But the last MultiDataTrigger
works only. Where did I wrong? Also I'd like to know whether a simpler way exists to factor these conditions. (checking IsGrouped
once.)
C#:
enum eGroupStyle
{
GroupStyle1,
GroupStyle2,
∙∙∙,
GroupStyleN,
}
XAML:
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding GroupStyle}" Value="GroupStyle1"/>
<Condition Binding="{Binding IsGrouped}" Value="False"/>
</MultiDataTrigger.Conditions>
<MultiDataTrigger.EnterActions>
<BeginStoryboard Storyboard="{StaticResource Storyboard_TurnToUnselectedStyle1}"/>
</MultiDataTrigger.EnterActions>
</MultiDataTrigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding GroupStyle}" Value="GroupStyle1"/>
<Condition Binding="{Binding IsGrouped}" Value="True"/>
</MultiDataTrigger.Conditions>
<MultiDataTrigger.EnterActions>
<BeginStoryboard Storyboard="{StaticResource Storyboard_TurnToSelectedStyle1}"/>
</MultiDataTrigger.EnterActions>
</MultiDataTrigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding GroupStyle}" Value="GroupStyle2"/>
<Condition Binding="{Binding IsGrouped}" Value="False"/>
</MultiDataTrigger.Conditions>
<MultiDataTrigger.EnterActions>
<BeginStoryboard Storyboard="{StaticResource Storyboard_TurnToUnselectedStyle2}"/>
</MultiDataTrigger.EnterActions>
</MultiDataTrigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding GroupStyle}" Value="GroupStyle2"/>
<Condition Binding="{Binding IsGrouped}" Value="True"/>
</MultiDataTrigger.Conditions>
<MultiDataTrigger.EnterActions>
<BeginStoryboard Storyboard="{StaticResource Storyboard_TurnToSelectedStyle2}"/>
</MultiDataTrigger.EnterActions>
</MultiDataTrigger>
∙∙∙
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding GroupStyle}" Value="GroupStyleN"/>
<Condition Binding="{Binding IsGrouped}" Value="False"/>
</MultiDataTrigger.Conditions>
<MultiDataTrigger.EnterActions>
<BeginStoryboard Storyboard="{StaticResource Storyboard_TurnToUnselectedStyleN}"/>
</MultiDataTrigger.EnterActions>
</MultiDataTrigger>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding GroupStyle}" Value="GroupStyleN"/>
<Condition Binding="{Binding IsGrouped}" Value="True"/>
</MultiDataTrigger.Conditions>
<MultiDataTrigger.EnterActions>
<BeginStoryboard Storyboard="{StaticResource Storyboard_TurnToSelectedStyleN}"/>
</MultiDataTrigger.EnterActions>
</MultiDataTrigger>
I found it out! I need to remove the previous storyboard at the exit-action like below. Now it works :)
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding Path=GroupStyle}" Value="GroupStyle1"/>
<Condition Binding="{Binding Path=IsGrouped}" Value="False"/>
</MultiDataTrigger.Conditions>
<MultiDataTrigger.EnterActions>
<BeginStoryboard x:Name="BeginStoryboard_TurnToUnselectedStyle1" Storyboard="{StaticResource Storyboard_TurnToUnselectedStyle1}"/>
</MultiDataTrigger.EnterActions>
<MultiDataTrigger.ExitActions>
<RemoveStoryboard BeginStoryboardName="BeginStoryboard_TurnToUnselectedStyle1"/>
</MultiDataTrigger.ExitActions>
</MultiDataTrigger>