WPF触发器由于其他触发器而无法工作

时间:2018-09-20 07:23:00

标签: c# wpf triggers

我有一个带有两个触发器的按钮。 一个在cv2.imread上,另一个在mouseClick上。

如果我将IsMouseOver中的一个注释掉,另一个注释可以很好地工作,但是如果我同时使用这两个注释,那么mouseClick将会被忽略。

这是我的触发器:

IsMouseOver

MouseDownHelper来自there,因为它在没有其他触发器的情况下仍然有效。

如果单击按钮,如何获得OnHover效果?

编辑: 您还可以使用也不起作用的IsPressed。

1 个答案:

答案 0 :(得分:0)

我找到了使用StopStoryboard的解决方案。

点击时,我还添加了第二个动画,并且我使用的是onEnter和onLeave而不是onHover。

<ControlTemplate.Triggers>
    <Trigger Property="local:MouseDownHelper.IsMouseLeftButtonDown"
             Value="True">
        <Trigger.EnterActions>
            <StopStoryboard BeginStoryboardName="StoryboardEnter"/>
            <BeginStoryboard>
                <Storyboard>
                    <ColorAnimation Duration="00:00:00.000"
                                    Storyboard.TargetName="SendReportsButtonMainGrid"
                                    Storyboard.TargetProperty="Background.Color"
                                    To="{StaticResource HoverGray}" />
                    <ColorAnimation Duration="00:00:00.100"
                                    Storyboard.TargetName="SendReportsButtonMainGrid"
                                    Storyboard.TargetProperty="Background.Color"
                                    To="{StaticResource ClickGray}" />
                </Storyboard>
            </BeginStoryboard>
        </Trigger.EnterActions>
        <Trigger.ExitActions>
            <BeginStoryboard>
                <Storyboard>
                    <ColorAnimation Duration="00:00:00.100"
                                    Storyboard.TargetName="SendReportsButtonMainGrid"
                                    Storyboard.TargetProperty="Background.Color"
                                    To="{StaticResource HoverGray}" />
                </Storyboard>
            </BeginStoryboard>
        </Trigger.ExitActions>
    </Trigger>
    <EventTrigger RoutedEvent="MouseEnter">
        <BeginStoryboard Name="StoryboardEnter">
            <Storyboard>
                <ColorAnimation Duration="00:00:00.200"
                                Storyboard.TargetName="SendReportsButtonMainGrid"
                                Storyboard.TargetProperty="Background.Color"
                                To="{StaticResource HoverGray}" />
            </Storyboard>
        </BeginStoryboard>
    </EventTrigger>
    <EventTrigger RoutedEvent="MouseLeave">
        <BeginStoryboard>
            <Storyboard>
                <ColorAnimation Duration="00:00:00.400"
                                Storyboard.TargetName="SendReportsButtonMainGrid"
                                Storyboard.TargetProperty="Background.Color"
                                To="{StaticResource HeaderGray}" />
            </Storyboard>
        </BeginStoryboard>
    </EventTrigger>
</ControlTemplate.Triggers>