在鼠标悬停上触发?

时间:2011-01-19 17:55:19

标签: wpf xaml triggers mousehover

我想知道是否有办法在MouseHover上设置触发器,而不是MouseOver

我希望当用户将鼠标悬停在指定区域上X秒而不是只是将鼠标悬停在传递过程中时,就会发生操作。

1 个答案:

答案 0 :(得分:1)

要在X秒后开始IsMouseOver触发器,您应该能够使用Storybard并设置BeginTime属性。以下是Button的示例,当鼠标悬停2秒时,它会将其大小增加50%。
要跳过动画部分,您可以为Duration="0"

设置DoubleAnimation
<Button Content="Button"
        Height="23"
        Width="75"
        RenderTransformOrigin="0.5 0.5">
    <Button.RenderTransform>
        <ScaleTransform />
    </Button.RenderTransform>
    <Button.Style>
        <Style TargetType="Button">
            <Style.Triggers>
                <Trigger Property="IsMouseOver" Value="True">
                    <Trigger.EnterActions>
                        <BeginStoryboard>
                            <Storyboard BeginTime="00:00:02">
                                <DoubleAnimation Storyboard.TargetProperty="(Button.RenderTransform).(ScaleTransform.ScaleX)" To="1.5"/>
                                <DoubleAnimation Storyboard.TargetProperty="(Button.RenderTransform).(ScaleTransform.ScaleY)" To="1.5"/>
                            </Storyboard>
                        </BeginStoryboard>
                    </Trigger.EnterActions>
                    <Trigger.ExitActions>
                        <BeginStoryboard>
                            <Storyboard>
                                <DoubleAnimation Storyboard.TargetProperty="(Button.RenderTransform).(ScaleTransform.ScaleX)" To="1.0"/>
                                <DoubleAnimation Storyboard.TargetProperty="(Button.RenderTransform).(ScaleTransform.ScaleY)" To="1.0"/>
                            </Storyboard>
                        </BeginStoryboard>
                    </Trigger.ExitActions>
                </Trigger>
            </Style.Triggers>
        </Style>
    </Button.Style>
</Button>