2010-02-18 90 views
7

嗯,我有一个自定义控件,当Visibility更改为Visible我有一个Trigger进入/退出动作,但问题是,当退出动作触发时Visibility不再是Visible所以动画无法看到如何我会解决这个问题吗?WPF在可见性更改时触发动画?

这里是我的Trigger

<ControlTemplate.Triggers> 
    <Trigger Property="Visibility" Value="Visible"> 
     <Trigger.ExitActions> 
      <BeginStoryboard Storyboard="{StaticResource Hide}"/> 
     </Trigger.ExitActions> 
     <Trigger.EnterActions> 
      <BeginStoryboard Storyboard="{StaticResource Show}"/> 
     </Trigger.EnterActions> 
    </Trigger> 
</ControlTemplate.Triggers> 
+0

没错。棘手的东西。我会用附加的属性+值强制来解决这个问题。看看这里:[WPF Fade动画](http://stackoverflow.com/questions/1013817/wpf-fade-animation/1015635#1015635)。希望这可以帮助。干杯,安瓦卡。 – Anvaka 2010-02-18 14:20:05

+0

这是否有淡入淡出的动画呢?我可以编辑这个,所以它只会延迟隐藏/折叠,直到我的动画完成了吗? – Peter 2010-02-18 14:58:35

+0

我想和Petoj一样。 – jpierson 2010-07-22 02:08:56

回答

3

我想这也太失败了。我认为不可能在Visibility属性上使用简单的ControlTemplateTrigger来完成此操作。你可以做的是添加一个Opacity动画从1到0到Trigger为一个不同的属性,例如DependencyProperty,你添加在你自己的代码。

0

您还可以使用ObjectAnimationUsingKeyFrames为动画期间设置Visibility。 在这种情况下,不需要任何代码隐藏。

+0

我不是100%肯定,但是如果HideStoryboard改变了可见性的值,它会触发ShowStoryboard吗? – Peter 2011-01-27 09:47:39