为什么只使用一个DataTrigger?

时间:2018-08-21 09:30:39

标签: c# wpf xaml

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>

仅第二个DataTrigger(CloseMenu)有效。如果我将第二个(CloseMenu)与第一个(OpenMenu)DataTriggers交换,则OpenMenu触发器将起作用,但关闭将不起作用。我需要两个触发器才能工作。

1 个答案:

答案 0 :(得分:1)

您将一个属性绑定到两个分开的DataTrigger中,如果多个DataTrigger仅处理一个依赖项属性,则只有最后一个起作用。

建议将两个DataTrigger合并为一个。

<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>

然后,您的EnterActions将在值为true时调用,而ExitActions将在值为false时调用。