递归应用样式触发器

时间:2019-06-14 09:04:02

标签: c# wpf

我有一个样式触发器,可以在鼠标悬停在图像上时(实际上是图像周围的边框)展开图像,并在移开图像时收缩。这是通过动画比例变换完成的。

但是,如果鼠标移出正在扩展的图像但仍在扩展区域内,则在鼠标悬停动画完成之前,将不断触发扩展和收缩动画,从而导致图像在扩展和收缩之间闪烁。 / p>

    

SELECT A.MetalID,SUM(B.ElctrctyConsumed) TotalConsumed
FROM Metal_Master_Data A
INNER JOIN Metal_Interval_Data B ON A.MetalID = B.MetalID
WHERE B.ReadingTime BETWEEN DATEADD(HH,-1,A.MetalEndActual) 
AND A.MetalEndActual and A.MetalID=@givenmetalid
GROUP BY A.MetalID

 <Setter Property="RenderTransform">
    <Setter.Value>
        <ScaleTransform/>
    </Setter.Value>
</Setter>
<Style.Triggers>
    <Trigger Property="IsMouseOver" Value="True">
        <Trigger.EnterActions>
            <BeginStoryboard>
                <Storyboard>
                    <ThicknessAnimation Duration="0:0:0.5" To="2.5" Storyboard.TargetProperty="BorderThickness" />
                    <DoubleAnimation Storyboard.TargetProperty="RenderTransform.ScaleX" From="1" To="1.2" Duration="0:0:0.5" AccelerationRatio="0.2" DecelerationRatio="0.4"/>
                    <DoubleAnimation Storyboard.TargetProperty="RenderTransform.ScaleY" From="1" To="1.2" Duration="0:0:0.5" AccelerationRatio="0.2" DecelerationRatio="0.4"/>
                </Storyboard>
            </BeginStoryboard>
        </Trigger.EnterActions>

        <Trigger.ExitActions>
            <BeginStoryboard>
                <Storyboard>
                    <ThicknessAnimation Duration="0:0:0.5" To="1.5" Storyboard.TargetProperty="BorderThickness" />
                    <DoubleAnimation Storyboard.TargetProperty="RenderTransform.ScaleX" From="1.2" To="1" Duration="0:0:0.5" AccelerationRatio="0.2" DecelerationRatio="0.4"/>
                    <DoubleAnimation Storyboard.TargetProperty="RenderTransform.ScaleY" From="1.2" To="1" Duration="0:0:0.5" AccelerationRatio="0.2" DecelerationRatio="0.4"/>
                </Storyboard>
            </BeginStoryboard>
        </Trigger.ExitActions>
    </Trigger>
</Style.Triggers>

是否可以通过某种方式停止动画的递归触发,从而停止图像尺寸的连续变化?

1 个答案:

答案 0 :(得分:0)

就在发布问题之后,我看了一段慢动作视频,了解正在发生的事情,并弄清正在发生的事情以及如何解决它。

问题出在动画起点的第二次(及后续)调用上。

他们认为以前的动画没有完成就可以了。因此,通过删除动画中的“ From”子句,他们从当前缩放比例开始,从而解决了问题。