本文介绍了WPF淡出上的控件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我的WPF应用程序,我有希望出现一个用户操作完成后(保存数据,删除...)反馈控制。可见性被设置为隐藏的开始和样式设置为限定为一个资源的animateFadeOut式(见下文)。然后我想设置文本和控制能见度可见在我的C#code和具有反馈控制显示的消息,5秒后淡出,并保持隐藏(Visibility.Hidden)。

下面的XAML的工作,我第一次打电话control.Visiblity = Visibility.Visible但控制没有再出现第二次。我想,这是因为动画仍然在运行,其中有超过反馈控制的控制。然后我试图设置FillBehavior停止,但刚才的控制再次可见,我想它隐藏起来。然后,FillBehavior =停止,我试图设置一个触发时,不透明度= 0时,设置能见度隐藏。触发似乎没有火灾和我留下了可见控制动画完成一次后。

请帮忙指出我在做什么错在这里。

另外,如果你能提出一个更好的方式来显示5秒后变淡,并可以反复被称为控制,我会AP preciate它。

谢谢!

解决方案

The problem is that after your animation completes your control still has Visibility=Visible, so it cannot be entered again.
I would rather use animation that does the whole thing, first shows the control, then hides it.

<Storyboard x:Key="animate">
    <ObjectAnimationUsingKeyFrames BeginTime="0:0:0" Storyboard.TargetProperty="Visibility">
        <DiscreteObjectKeyFrame KeyTime="0">
            <DiscreteObjectKeyFrame.Value>
                <Visibility>Visible</Visibility>
            </DiscreteObjectKeyFrame.Value>
        </DiscreteObjectKeyFrame>
    </ObjectAnimationUsingKeyFrames>
    <DoubleAnimation BeginTime="0:0:0.0" Storyboard.TargetProperty="Opacity" From="0" To="1" Duration="0:0:0.2"/>
    <DoubleAnimation BeginTime="0:0:5.0" Storyboard.TargetProperty="Opacity" From="1" To="0" Duration="0:0:0.5"/>
    <ObjectAnimationUsingKeyFrames BeginTime="0:0:5.5" Storyboard.TargetProperty="Visibility">
        <DiscreteObjectKeyFrame KeyTime="0">
            <DiscreteObjectKeyFrame.Value>
                <Visibility>Hidden</Visibility>
            </DiscreteObjectKeyFrame.Value>
        </DiscreteObjectKeyFrame>
    </ObjectAnimationUsingKeyFrames>
</Storyboard>

And use it as follows:

((Storyboard)FindResource("animate")).Begin(someControl);

这篇关于WPF淡出上的控件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-11 21:06