user9039204
user9039204

Reputation: 63

Why work only one DataTrigger?

code

        <ControlTemplate.Triggers>
        <DataTrigger Binding="{Binding HamburgerMenu_IsOpen, Mode=OneWay}" Value="True">
            <DataTrigger.EnterActions>
                <BeginStoryboard Storyboard="{StaticResource HamburgerMenuRectangles_OpenMenu}"/>
            </DataTrigger.EnterActions>
        </DataTrigger>
        <DataTrigger Binding="{Binding HamburgerMenu_IsOpen, Mode=OneWay}" Value="False">
            <DataTrigger.EnterActions>
                <BeginStoryboard Storyboard="{StaticResource HamburgerMenuRectangles_CloseMenu}"/>
            </DataTrigger.EnterActions>
        </DataTrigger>
    </ControlTemplate.Triggers>

Only second DataTrigger(CloseMenu) works. If I swap the second(CloseMenu) with the first(OpenMenu) DataTriggers, then OpenMenu Trigger will works, but Close won't work. I need two triggers to work.

Upvotes: 0

Views: 154

Answers (1)

walterlv
walterlv

Reputation: 2376

You bind a single property in two separated DataTriggers, if multiple DataTriggers handle only one dependency property, only the last one works.

It's recommended to merge the two DataTriggers into one.

<ControlTemplate.Triggers>
    <DataTrigger Binding="{Binding HamburgerMenu_IsOpen, Mode=OneWay}" Value="True">
        <DataTrigger.EnterActions>
            <BeginStoryboard Storyboard="{StaticResource HamburgerMenuRectangles_OpenMenu}"/>
        </DataTrigger.EnterActions>
        <DataTrigger.ExitActions>
            <BeginStoryboard Storyboard="{StaticResource HamburgerMenuRectangles_CloseMenu}"/>
        </DataTrigger.ExitActions>
    </DataTrigger>
</ControlTemplate.Triggers>

Then your EnterActions will invoke when the value is true and ExitActions will invoke when it is false.

Upvotes: 2

Related Questions