【发布时间】:2015-03-16 07:05:05
【问题描述】:
我需要做一个比较简单的WPF应用。
有故事板,当按钮被按下时动画,以便它们淡出。动画逐渐降低不透明度并将可见性设置为隐藏。而且效果很好。
问题是我想再次显示该按钮,但以编程方式。好吧,它不起作用,动画更改的属性对我的代码所做的更改免疫。我还需要以编程方式隐藏按钮。
所以我尝试让动画淡入并像这样以编程方式调用它:
Storyboard fadein = ((Storyboard)FindResource("fadein"));
fadein.Begin(btnFlag);
我也这样做以编程方式调用淡出。
现在我有不同的问题:
我第一次以编程方式调用淡出时,它以某种方式防止在按下按钮时再次触发淡出。
我该怎么做? 谢谢。
如果这是个愚蠢的问题,我很抱歉,我只需要制作这个 WPF 应用程序,我没有这方面的经验。
编辑: 我已经尝试更改 FillBehavior,但没有帮助。
编辑: 我觉得这真的很奇怪。我设置 btnFlag.Opacity = 1; 然后在那条线之后立即我有这条线:
Console.WriteLine(btnFlag.Opacity);
它会打印 0.1,这是动画设置的值。
编辑:
这是我的淡入淡出故事板:
<Storyboard x:Key="fadein">
<DoubleAnimation BeginTime="0:0:0.0" Storyboard.TargetProperty="Opacity" From="0.1" To="1.0" Duration="0:0:0.1"/>
<ObjectAnimationUsingKeyFrames BeginTime="0:0:0.0" Storyboard.TargetProperty="Visibility">
<DiscreteObjectKeyFrame KeyTime="0">
<DiscreteObjectKeyFrame.Value>
<Visibility>Visible</Visibility>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
<Storyboard x:Key="fadeout">
<DoubleAnimation BeginTime="0:0:0.25" Storyboard.TargetProperty="Opacity" From="1.0" To="0.1" Duration="0:0:0.5"/>
<ObjectAnimationUsingKeyFrames BeginTime="0:0:0.75" Storyboard.TargetProperty="Visibility">
<DiscreteObjectKeyFrame KeyTime="0">
<DiscreteObjectKeyFrame.Value>
<Visibility>Hidden</Visibility>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
我有样式,所有按钮都引用了我想要具有相同外观和感觉的按钮。这是该样式的代码 sn-p:
<BeginStoryboard Storyboard="{StaticResource fadeout}"/>
</Trigger.EnterActions>
一切都很好,但是当我第一次以编程方式启动动画时,它会停止以通常的方式工作。 如果我想在代码中修改之前被动画修改过的属性,所有修改都会被忽略。
【问题讨论】:
-
把你的 xaml 淡入淡出
-
Storyboard.TargetName在哪里 -
我会更新问题。
-
感谢您的帮助。我找到了答案(至少我是这么认为的:))。我昨天很累。
标签: c# wpf animation storyboard