数据触发器的 EnterAction/ExitAction 动画冲突



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

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

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

<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>

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

置信度属性是实时变化的,但是当UIElement是半透明的时候,这个值总是大于0。

我也试过停止故事板,但这并没有解决问题。

<DataTrigger Binding="{Binding Confidence}" Value="0">
    <DataTrigger.EnterActions>
        <StopStoryboard BeginStoryboardName="BeginFadeIn" />
        <BeginStoryboard x:Name="BeginFadeout" Storyboard="{StaticResource FadeOutStoryboard}" />
    </DataTrigger.EnterActions>
    <DataTrigger.ExitActions>
        <StopStoryboard BeginStoryboardName="BeginFadeout" />
        <BeginStoryboard x:Name="BeginFadeIn" Storyboard="{StaticResource FadeInStoryboard}" />
    </DataTrigger.ExitActions>
</DataTrigger>

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

动画似乎没有从storyboard继承持续时间,并且有一些默认的持续时间。

当在storyboard上设置持续时间并且持续时间小于动画时,动画将被剪切。

持续时间的十进制值出现问题。您可以选择不同的缓动功能,在相同的持续时间内模拟更快的动画效果,如下所示:缓和模式的MSDN参考。

<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>

最新更新