EnterActions动画未停止且ExitActions动画未启动

时间:2011-10-03 18:00:37

标签: .net wpf xaml storyboard datatrigger

我公司的一个应用程序通过以屏幕为中心的内容控件显示弹出窗口,该内容控件在需要时隐藏,并在其后面放置一个径向渐变矩形以阻止UI的其余部分,此外它看起来不错。我试图在显示矩形和弹出窗口时添加动画,而不是仅仅弹出。输入动画效果很好,但是当弹出窗口关闭时,从不调用退出动画,并且输入动画的效果保持不变。

我的XAML如下:

<Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Panel.ZIndex="999" DataContext="{Binding Source={x:Static popup:PopUpService.Instance}}" IsHitTestVisible="{Binding IsPopUpVisible}" Opacity="0">
        <Rectangle Fill="{DynamicResource RadialBlackToBlack}" />
        <ItemsControl Focusable="False" ItemsSource="{Binding PopUps}">
            <ItemsControl.ItemsPanel>
                <ItemsPanelTemplate>
                    <Grid IsItemsHost="True" />
                </ItemsPanelTemplate>
            </ItemsControl.ItemsPanel>
        </ItemsControl>
        <Grid.Style>
            <Style TargetType="Grid">
                <Style.Triggers>
                    <DataTrigger Binding="{Binding IsPopUpVisible, Source={x:Static popup:PopUpService.Instance}}" Value="True">
                        <DataTrigger.EnterActions>
                            <BeginStoryboard>
                                <Storyboard>
                                    <DoubleAnimation Storyboard.TargetProperty="Opacity"
                                        To="100" Duration="0:0:1"/>

                                </Storyboard>
                            </BeginStoryboard>

                        </DataTrigger.EnterActions>
                        <DataTrigger.ExitActions>
                            <BeginStoryboard>
                                <Storyboard>
                                    <DoubleAnimation Storyboard.TargetProperty="Opacity"
                                        To="0" Duration="0:0:1" />
                                </Storyboard>
                            </BeginStoryboard>
                        </DataTrigger.ExitActions>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </Grid.Style>
    </Grid>

我做错了什么?

感谢。

1 个答案:

答案 0 :(得分:1)

不透明度应设为1而不是100,这会导致问题。 (从1001的动画不可见,从10的最后一位得到很少的动画时间。

也许你也想摆脱冗余:

  1. 不要设置属性两次或不必要,将Duration放在Storyboards和所有HoldEnd上,这是默认设置。
  2. 为什么第一个SB中有AutoReverse