【问题标题】:EnterActions animations not stopping and ExitActions animations not startingEnterActions 动画未停止和 ExitActions 动画未开始
【发布时间】:2011-11-30 03:04:12
【问题描述】:

我公司的一个应用程序通过以屏幕为中心的内容控件显示弹出窗口,该控件在需要时隐藏,其后面的径向渐变矩形阻挡了 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>

我做错了什么?

谢谢。

【问题讨论】:

    标签: .net wpf xaml storyboard datatrigger


    【解决方案1】:

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

    也许你也想摆脱冗余:

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

    【讨论】:

    • 但是当 IsPopUpVisible 变为 false 时,不再满足触发条件并且应该触发退出动画,不是吗? IsPopUpVisible 不会立即使弹出窗口不可见,我打算通过将不透明度设置为 0 来通过退出动画来做到这一点。
    • @SoManyGoblins:编辑了我的答案,我观察到您的代码出现了一些重大延迟,因为动画从 100 变为 0 并且仅在 1 可以看到差异(有效范围是 0 到 1`),但最终它确实使网格不可见。
    猜你喜欢
    • 2019-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-25
    • 1970-01-01
    • 1970-01-01
    • 2013-05-19
    • 2012-07-22
    相关资源
    最近更新 更多