事件触发器(WPF)的奇怪行为

本文关键字:触发器 WPF 事件 | 更新日期: 2023-09-27 18:15:43

考虑以下示例(取自MSDN示例)

<Style TargetType="Rectangle">
  <Style.Triggers>
    <EventTrigger RoutedEvent="MouseEnter">
        <BeginStoryboard>
            <Storyboard>
              <DoubleAnimation To="300" Duration="0:0:1.5" 
                AccelerationRatio="0.10" DecelerationRatio="0.25" 
                Storyboard.TargetProperty="(Canvas.Width)" />
            </Storyboard>
        </BeginStoryboard>
    </EventTrigger>
    <EventTrigger RoutedEvent="MouseLeave">
        <BeginStoryboard>
            <Storyboard>
              <DoubleAnimation Duration="0:0:1.5" 
                AccelerationRatio="0.10" DecelerationRatio="0.25" 
                Storyboard.TargetProperty="(Canvas.Width)" />
            </Storyboard>
        </BeginStoryboard>
    </EventTrigger>
  </Style.Triggers>
</Style>

有2个动画,一个用于鼠标进入事件,另一个用于鼠标离开事件。

注意,在鼠标离开事件的动画中,只指定了持续时间。没有从/到。指定By。DoubleAnimation中指定From/To/By的remark部分必须指定。我的问题是这个动画是如何工作的?是否考虑矩形的原始值作为动画的To

事件触发器(WPF)的奇怪行为

通过转换回默认值来工作。您引用的表仅指定了当使用from/to/by的各种组合时的行为。

每个故事板都是独立的,所以它们不会跟踪其他故事板所做的事情,所以第一个故事板会转换到定义的宽度,第二个故事板会转换回原始值。