DataTrigger的EnterAction / ExitAction动画冲突

时间:2015-10-03 09:44:28

标签: wpf xaml

最初我有一个DataTrigger,它将可见性设置为折叠:

awk '{gsub("default = \"\"", "default = \"$vc_address\"", $0); print > FILENAME}' terraform.tf

我想要平滑的FadeOut / FadeIn动画而不是设置可见性,其中FadeOut比FadeIn动画慢,所以我使用了DataTrigger的EnterActions和ExitAction:

<DataTrigger Binding="{Binding Confidence}" Value="0">
   <Setter Property="Visibility" Value="Collapsed" />
</DataTrigger>

问题是,有时UIElement保持半透明且没有动画正在运行

置信属性实时变化,但当UIElement是半透明时,该值始终高于0。

我也试过停止故事板,但是那个havnen没有解决问题。

<Storyboard x:Key="FadeOutStoryboard" Duration="0:0:1">
    <DoubleAnimation Storyboard.TargetProperty="Opacity" To="0" />
</Storyboard>
<Storyboard  x:Key="FadeInStoryboard" Duration="0:0:0.2">
    <DoubleAnimation Storyboard.TargetProperty="Opacity" To="1" />
</Storyboard>

<DataTrigger Binding="{Binding Confidence}" Value="0">
    <DataTrigger.EnterActions>
          <BeginStoryboard Storyboard="{StaticResource FadeOutStoryboard}" />
     </DataTrigger.EnterActions>
     <DataTrigger.ExitActions>
          <BeginStoryboard Storyboard="{StaticResource FadeInStoryboard}" />
      </DataTrigger.ExitActions>
</DataTrigger>

2 个答案:

答案 0 :(得分:2)

我需要明确地设置动画的持续时间而不仅仅是在故事板上:

似乎动画不会从故事板继承持续时间,并且默认持续时间为1秒。

当在故事板上设置持续时间且其小于动画时,动画将被剪裁。

答案 1 :(得分:0)

持续时间中出现十进制值问题。您可以从各种缓动功能中进行选择,以在相同的持续时间内模拟更快的动画效果,如下所示 MSDN reference for Easing Modes.

<Storyboard  x:Key="FadeInStoryboard" Duration="0:0:1">
            <DoubleAnimation Storyboard.TargetProperty="Opacity" From="0" To="1">
                <DoubleAnimation.EasingFunction>
                    <BackEase Amplitude='1' EasingMode='EaseIn' />
                </DoubleAnimation.EasingFunction>
            </DoubleAnimation>
        </Storyboard>