0

我正在尝试创建一个非常简单的淡出效果,只要用户控件的可见性变为隐藏,就会发生这种效果。

为此,我创建了一个情节提要,只要用户控件的可见性更改为隐藏,就会触发该情节提要。然后它首先将可见性再次更改为可见,以便我可以对其进行动画处理。然后它会随着时间的推移改变不透明度,最后将可见性更改为隐藏。然而,这会导致动画永远重复。

在最后一帧中将控件从可见更改为折叠时,它确实工作了一次,但是用户控件将永远不会再次可见(我监听该IsVisibleChanged事件并且它在折叠一次后永远不会被触发,即使我确实有control.Visibility = Visibility.Visible;该事件处理程序末尾的代码。

那么如何确保动画只触发一次,最好没有代码,这样我就可以在一个不错的资源字典中添加这个淡出控件,它总是可以工作的。我在 SO 上看到了一些与此相关的问题,尤其是这个问题,但我无法让它发挥作用。

我到目前为止的代码:

<UserControl.Style>
        <Style TargetType="{x:Type UserControl}">
            <Style.Triggers>
                <Trigger Property="Visibility" Value="Hidden">
                    <Trigger.EnterActions>
                        <BeginStoryboard>
                            <Storyboard>
                                <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility">
                                    <DiscreteObjectKeyFrame KeyTime="0">
                                        <DiscreteObjectKeyFrame.Value>
                                            <Visibility>Visible</Visibility>
                                        </DiscreteObjectKeyFrame.Value>
                                    </DiscreteObjectKeyFrame>
                                </ObjectAnimationUsingKeyFrames>
                                <DoubleAnimation Storyboard.TargetProperty="Opacity" From="1.0" To="0.0" Duration="0:0:3" FillBehavior="Stop"/>
                                <ObjectAnimationUsingKeyFrames BeginTime="0:0:3.5" Storyboard.TargetProperty="Visibility">
                                    <DiscreteObjectKeyFrame KeyTime="0">
                                        <DiscreteObjectKeyFrame.Value>
                                            <Visibility>Hidden</Visibility>
                                        </DiscreteObjectKeyFrame.Value>
                                    </DiscreteObjectKeyFrame>
                                </ObjectAnimationUsingKeyFrames>                                
                            </Storyboard>
                        </BeginStoryboard>
                    </Trigger.EnterActions>
                </Trigger>
            </Style.Triggers>
        </Style>
    </UserControl.Style>
4

1 回答 1

0

如果您只是删除了ObjectAnimation将可见性设置为隐藏的设置,它会正常工作吗?所以控件在技术上是可见的,但不透明度为 0?

于 2013-03-13T17:17:34.827 回答