我正在创建一个包含动画的样式,然后可以将其继承到特定的控件样式,这些样式会自动应用。
实际上我正在努力实现一个简单的动画:
Visibility
更改为Visible
时,Opacity
从0更改为1 Visibility
更改为visible
之外的其他内容时,Opacity
正在做相反的事情到目前为止,我得到了:
<Style x:Key="BaseAnimationsStyle">
<Style.Triggers>
<Trigger Property="FrameworkElement.Visibility" Value="Visible">
<Trigger.EnterActions> <!-- this works -->
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="Opacity" To="1" Duration="0:0:0.5" />
</Storyboard>
</BeginStoryboard>
</Trigger.EnterActions>
<Trigger.ExitActions><!-- this doesn't -->
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="Opacity" To="0" Duration="0:0:0.5" />
</Storyboard>
</BeginStoryboard>
</Trigger.ExitActions>
</Trigger>
</Style.Triggers>
</Style>
如果在控件上设置了上述样式,则它具有以下行为:
当控件的Visibility
设置为Visible
时,转换工作正常,意味着它正在淡入。
问题:
当控件的Visibility
设置为Hidden
(或甚至Collapsed
)时,控件将立即隐藏而不会褪色。
我的猜测是,有一些默认行为可以覆盖FrameworkElement
处理可见性变化的方式。
答案 0 :(得分:1)
将Visibility
属性设置为Collapsed
或Hidden
会使元素立即隐藏,但您可以设置Visibility
属性,而不是设置Opacity
属性。然后设置$('.footer').scrollToFixed( {
bottom: 0,
limit: $('.footer').offset().top,
});
属性的动画以淡出元素。有关更多信息和示例,请参阅以下链接。
WPF:如何动画可见性属性?: http://blogs.microsoft.co.il/arik/2010/02/08/wpf-how-to-animate-visibility-property/
答案 1 :(得分:0)
我已经用@ mm8的答案提供的信息解决了我的问题。
基本上我将VisibilityAnimation类添加到我的项目中。然后我使用Setter中提供的附加属性创建我的Base-Style。
<!-- Animations -->
<Style x:Key="BaseAnimationsStyle">
<Setter Property="anim:VisibilityAnimation.AnimationType" Value="Fade" />
</Style>
<!-- This adds the Visibility Animation to every Grid which has access to this resource -->
<Style TargetType="{x:Type Grid}" BasedOn="{StaticResource BaseAnimationsStyle}" />