Триггер WPF не работает из-за другого триггера - PullRequest
0 голосов
/ 20 сентября 2018

У меня есть кнопка с двумя триггерами.Один находится на IsMouseOver, а другой на mouseClick.

Если я закомментирую IsMouseOver один, другой будет работать отлично, но если я использую оба, то mouseClick игнорируется.

Это мои триггеры:

<ControlTemplate.Triggers>
    <Trigger Property="local:MouseDownHelper.IsMouseLeftButtonDown"
             Value="True">
        <Trigger.EnterActions>
            <BeginStoryboard>
                <Storyboard>
                    <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>
    <Trigger Property="IsMouseOver"
             Value="True">
        <Trigger.EnterActions>
            <BeginStoryboard>
                <Storyboard>
                    <ColorAnimation Duration="00:00:00.400"
                                    Storyboard.TargetName="SendReportsButtonMainGrid"
                                    Storyboard.TargetProperty="Background.Color"
                                    To="{StaticResource HoverGray}" />
                </Storyboard>
            </BeginStoryboard>
        </Trigger.EnterActions>
        <Trigger.ExitActions>
            <BeginStoryboard>
                <Storyboard>
                    <ColorAnimation Duration="00:00:00.800"
                                    Storyboard.TargetName="SendReportsButtonMainGrid"
                                    Storyboard.TargetProperty="Background.Color"
                                    To="{StaticResource HeaderGray}" />
                </Storyboard>
            </BeginStoryboard>
        </Trigger.ExitActions>
    </Trigger>
</ControlTemplate.Triggers>

MouseDownHelper от там , как и сказано, работает без другого триггера.

Как я могу получитьЭффект OnHover и еще один, если кнопка нажата?

РЕДАКТИРОВАТЬ: Вы также можете использовать IsPressed, который тоже не работает.

1 Ответ

0 голосов
/ 20 сентября 2018

Я нашел решение, используя StopStoryboard.

Я также добавил вторую анимацию при нажатии, и вместо onHover я использую onEnter и onLeave.

<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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...