Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.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
Wpf 数据触发器';s进入/退出动画冲突_Wpf_Xaml - Fatal编程技术网

Wpf 数据触发器';s进入/退出动画冲突

Wpf 数据触发器';s进入/退出动画冲突,wpf,xaml,Wpf,Xaml,最初我有一个DataTrigger,它将可见性设置为折叠: <DataTrigger Binding="{Binding Confidence}" Value="0"> <Setter Property="Visibility" Value="Collapsed" /> </DataTrigger> 我想要平滑淡出/淡出动画,而不是设置可见性,淡出比淡出动画慢,所以我使用了DataTrigger的Enteraction和ExitAction: &l

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

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

我想要平滑淡出/淡出动画,而不是设置可见性,淡出比淡出动画慢,所以我使用了DataTrigger的Enteraction和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>

持续时间中的十进制值似乎有问题。您可以从各种缓和功能中进行选择,以在相同的持续时间内模拟更快的动画效果,如下所示:


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

看起来动画并没有从故事板继承持续时间,并且有一些默认的持续时间1

在情节提要上设置持续时间且其小于动画时,动画将被剪裁

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