Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# EventTrigger(WPF)的奇怪行为_C#_.net_Wpf_Xaml_Animation - Fatal编程技术网

C# EventTrigger(WPF)的奇怪行为

C# EventTrigger(WPF)的奇怪行为,c#,.net,wpf,xaml,animation,C#,.net,Wpf,Xaml,Animation,考虑以下示例(取自样本) 有两个动画,一个用于鼠标移动事件,另一个用于鼠标离开事件 请注意,在鼠标离开事件的动画中,仅指定了持续时间。未指定From/To.By。 必须指定From/To/By中指定的备注部分。 我的问题是这个动画是如何工作的?它是否将矩形的原始值视为动画的到值。它通过转换回默认值来工作。您提到的表仅指定使用from/to/by的各种组合时的行为 每个情节提要都是独立的,因此它们不会跟踪另一个情节提要所做的事情,因此第一个情节提要将转换为定义的宽度,第二个情节提要将转换回原始

考虑以下示例(取自样本)


有两个动画,一个用于鼠标移动事件,另一个用于鼠标离开事件

请注意,在鼠标离开事件的动画中,仅指定了持续时间。未指定From/To.By。 必须指定From/To/By中指定的备注部分。
我的问题是这个动画是如何工作的?它是否将矩形的原始值视为动画的
值。

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


每个情节提要都是独立的,因此它们不会跟踪另一个情节提要所做的事情,因此第一个情节提要将转换为定义的宽度,第二个情节提要将转换回原始值。

动画的结束值。默认值为空。从
DoubleAnimation.To
[MSDN](动画的结束值。默认值为空)。看起来它将是第一个动画(在MouseEnter上)之前设置的原始值,但为什么会发生这种情况,我找不到任何信息。如果不指定to/From/By,doubleanimation不知道应该使用什么规则从当前属性状态(canvas.width)转换,因此,它最终使用Properties的默认值。定义为宽度为50的矩形将在mouseleave上转换回50,因为doubleanimation的to/From/By没有给出它应该转换到的其他值的方向。这也是我的假设,但您能否提供一些说明此行为的参考。本文提到了如果您指定to/from/by,会产生什么效果,因此,如果没有指定它们,则可能暗示它会执行其他操作。但是,也可以仅指定起始值、目标值或偏移值。在这些情况下,动画将从正在设置动画的特性中获取缺少的目标值。
<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>