WPF 多个触发器

RSt*_*yle 0 wpf triggers storyboard

我在 isPressed 和 isMouseOver 之间有冲突的故事板。两者都将按钮的背景更改为不同的颜色。但是 isMouseOver 故事板覆盖了 isPressed 故事板。我如何克服这个?我听说过多个触发器,但你们能给我一个代码解决方案吗?我是 WPF 的新手。

<ControlTemplate.Triggers>
    <Trigger Property="IsMouseOver" Value="True">
        <Trigger.EnterActions>
            <BeginStoryboard Storyboard="{StaticResource ToolsButtonMouseOver}"/>
        </Trigger.EnterActions>
        <Trigger.ExitActions>
            <BeginStoryboard x:Name="ToolsButtonMouseNotOver_BeginStoryboard" Storyboard="{StaticResource ToolsButtonMouseNotOver}"/>
        </Trigger.ExitActions>
    </Trigger>
    <Trigger Property="IsPressed" Value="True">
        <Trigger.ExitActions>
            <BeginStoryboard x:Name="ToolsButtonNotPressedStoryboard_BeginStoryboard1" Storyboard="{StaticResource ToolsButtonNotPressedStoryboard}"/>
        </Trigger.ExitActions>
        <Trigger.EnterActions>
            <BeginStoryboard x:Name="ToolsButtonNotPressedStoryboard_BeginStoryboard" Storyboard="{StaticResource ToolsButtonPressedStoryboard}"/>
        </Trigger.EnterActions>
    </Trigger>
</ControlTemplate.Triggers>
Run Code Online (Sandbox Code Playgroud)

Jan*_*nen 8

当它是 IsMouseOver 和 IsPressed 时,你应该有多重触发。另请注意,触发器的顺序也很重要。如果简单的 IsMouseOver 在多触发器之后,则当您悬停并按下时,它将成为活动条件。使用前景进行演示,因为它是演示效果的最简单方式。

<Button Content="Click Me">
    <Button.Style>
        <Style TargetType="{x:Type Button}">
            <Setter Property="Foreground" Value="Black"/>
            <Style.Triggers>
                <Trigger Property="IsMouseOver" Value="True">
                    <Setter Property="Foreground" Value="SpringGreen"/>
                </Trigger>
                <MultiTrigger>
                    <MultiTrigger.Conditions>
                        <Condition Property="IsMouseOver" Value="True"/>
                        <Condition Property="IsPressed" Value="True"/>
                    </MultiTrigger.Conditions>
                    <Setter Property="Foreground" Value="Blue"/>
                </MultiTrigger>
            </Style.Triggers>
        </Style>
    </Button.Style>
</Button>
Run Code Online (Sandbox Code Playgroud)